← Все вопросы
Никак не пойму рекурсию. Объясните на факториале
16
Читаю про рекурсию третий день, в голове каша. Как функция может вызывать сама себя и не уйти в бесконечность? Желательно на примере факториала.
2 ответа
24
Рекурсия = база + шаг к базе.
def fact(n):
if n <= 1: # база: дальше не идём
return 1
return n * fact(n - 1) # шаг: задача поменьше
fact(4) = 4fact(3) = ... = 4321. Каждый вызов уменьшает n, упирается в базу и «разворачивается» обратно. Без базы был бы бесконечный спуск (RecursionError).
Руслан Сагдиев «разворачивается обратно» — вот этого не хватало, спасибо! · 7 месяцев назад
Vitaliy Kovalenko можете ещё про Фибоначчи так же? · 7 месяцев назад
16
Мне помогло рисовать стек вызовов на бумаге: каждый вызов — коробочка, ждёт результат следующей. Дошёл до базы — коробочки закрываются снизу вверх.
Георгий Почапский + за совет с бумагой, реально помогает · 7 месяцев назад
Ваш ответ
Войдите, чтобы ответить на вопрос.