← Все вопросы

Что такое рекурсивная функция простыми словами?

Задан 7 месяцев назад991 просмотров3 ответа
17

Все объясняют рекурсию на факториале, но я именно его и не понимаю. Можете объяснить саму идею рекурсии на каком-нибудь другом примере, попроще?

3 ответа

31

Рекурсивная функция — это функция, которая вызывает саму себя, чтобы решить задачу через её же меньшую версию. Два обязательных условия:

  1. База — простой случай, когда ответ известен сразу (без рекурсии). Без неё будет бесконечный вызов.
  2. Шаг — функция вызывает себя на меньшей задаче и из этого собирает ответ.

Пример без факториала — сумма чисел от 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.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект