что такое рекурсивные функции

MagicMan_Rostov

Активный участник
Регистрация
2 Май 2023
Сообщения
18
Всем добрейших времён суток, на данный момент стало вдруг интересно что такое рекурсивная функция, примечание: не имею ни малейшего понятия зачем она вообще нужна. НО знаю что такое рекурсия - поведение функции/объекта, при котором он запускает себя абсолютно бесконечно.

Для тех, у кого достаточно свободного времени и не лень объяснить мне - нубищу в коде, где она может применяться, какие процессы может упростить и как вызывается - пожалуйста. Это все что мне нужно.
 

Mee8YT

Эксперт
Регистрация
3 Май 2023
Сообщения
297
Всем добрейших времён суток, на данный момент стало вдруг интересно что такое рекурсивная функция, примечание: не имею ни малейшего понятия зачем она вообще нужна. НО знаю что такое рекурсия - поведение функции/объекта, при котором он запускает себя абсолютно бесконечно.

Для тех, у кого достаточно свободного времени и не лень объяснить мне - нубищу в коде, где она может применяться, какие процессы может упростить и как вызывается - пожалуйста. Это все что мне нужно.
у тебя есть массив:
#1: яблоко
#2: банан
#3: апельсин
#4: виноград
#5: банан
#6: банан

твоя задача посчитать кол-во бананов в массиве

сначала нам нужен индекс элемента в массиве и кол-во посчитанных бананов, перед рекурсией содаём переменную с индексом
Форматирование (BB-код):
Присв переменную - Равно (index = 0)
Присв переменную - Равно (bananas = 0)

проходимся по каждому элементу
Форматирование (BB-код):
Функция ["рекурсия"]
Присв переменную - Прибавить (index += 1)
Массивы - Получить элемент массива (fruits, index, fruit)
Если переменная - Равно (fruit == "банан") {
    Присв переменную - Прибавить (bananas += 1)
}

Массивы - Получить размер (fruits, array_len)
Если переменная - Сравнить число ЛЕГКО (array_len > index) {
    Игровое действие - Ждать 1 тик
    Вызвать функцию - "рекурсия" (синхронный запуск)
} Иначе {
    Действие игрока - Отправить сообщение ("В массиве " + bananas + " бананов.")
}

код образно будет читаться так:
присваиваем переменные индекса и кол-ва бананов, запускаем функцию рекурсии, в функции проходимся по каждому элементу, выявляя бананы в массиве
код будет работать в пределах массива (об этом говорит код проверки размера массива)

можно работать не только с массивами, можно работать с векторным оружием, вычислениями, процедурным (поэтапным) получением результата
никакие хорошие плоты с выгрузкой у тебя не выйдут без рекурсивок
по факту, тебе нужно выполнять N кол-во действий в функции, чтобы привести что-то в нужное состояние, получить результат, выполнить действия над игроком/миром/переменными и прочее
 
Последнее редактирование:

MagicMan_Rostov

Активный участник
Регистрация
2 Май 2023
Сообщения
18
у тебя есть массив:
#1: яблоко
#2: банан
#3: апельсин
#4: виноград
#5: банан
#6: банан

твоя задача посчитать кол-во бананов в массиве

сначала нам нужен индекс элемента в массиве и кол-во посчитанных бананов, перед этим содаём переменную с индексом
Форматирование (BB-код):
Присв переменную - Равно (index = 0)
Присв переменную - Равно (bananas = 0)

проходимся по каждому элементу
Форматирование (BB-код):
Функция ["рекурсия"]
Присв переменную - Прибавить (index += 1)
Массивы - Получить элемент массива (fruits, index, fruit)
Если переменная - Равно (fruit == "банан") {
    Присв переменную - Прибавить (bananas += 1)
}

Массивы - Получить размер (fruits, array_len)
Если переменная - Сравнить число ЛЕГКО (array_len > index) {
    Игровое действие - Ждать 1 тик
    Вызвать функцию - "рекурсия" (синхронный запуск)
} Иначе {
    Действие игрока - Отправить сообщение ("В массиве " + bananas + " бананов.")
}

код образно будет читаться так:
присваиваем переменные индекса и кол-ва бананов, запускаем функцию рекурсии, в функцией проходимся по каждому элементу, выявляя бананы в массиве
код будет работать в пределах массива (об этом говорит код проверки размера массива)

можно работать не только с массивами, можно работать с векторным оружием, вычислениями, процедурным (поэтапным) получением результата
никакие хорошие плоты с выгрузкой у тебя не выйдут без рекурсивок
по факту, тебе нужно выполнять N кол-во действий в функции, чтобы привести что-то в нужное состояние, получить результат, выполнить действия над игроком/миром/переменными и прочее
спасибо, я более менее понял для чего она нужна, в моей игре как раз нужна будет выгрузка плотов, помог
 
Сверху