← Все вопросы
Что такое рекурсивная функция простыми словами?
17
Все объясняют рекурсию на факториале, но я именно его и не понимаю. Можете объяснить саму идею рекурсии на каком-нибудь другом примере, попроще?
3 ответа
31
Рекурсивная функция — это функция, которая вызывает саму себя, чтобы решить задачу через её же меньшую версию. Два обязательных условия:
- База — простой случай, когда ответ известен сразу (без рекурсии). Без неё будет бесконечный вызов.
- Шаг — функция вызывает себя на меньшей задаче и из этого собирает ответ.
Пример без факториала — сумма чисел от 1 до n:
def summa(n):
if n == 0: # база: сумма до 0 это 0
return 0
return n + summa(n - 1) # шаг: n плюс сумма до n-1
print(summa(5)) # 15
Идея на пальцах: чтобы сложить числа до 5, я беру 5 и прибавляю «сумму до 4», а её считаю тем же способом — и так до базы. Это как матрёшка: открываешь, внутри такая же, но меньше, пока не дойдёшь до самой маленькой.
Дмитрий Герасимов аналогия с матрёшкой огонь 🔥 · 7 месяцев назад
Nazar Shiyka наконец-то без факториала, спасибо! · 7 месяцев назад
11
Функция, которая вызывает сама себя. Главное — не забыть условие выхода (базу), иначе RecursionError.
8
Ещё классика — числа Фибоначчи: fib(n) = fib(n-1) + fib(n-2), база fib(0)=0, fib(1)=1.
Ваш ответ
Войдите, чтобы ответить на вопрос.