Выполните это в своей голове.Например - что такое factorial(2)
?2 не 0, поэтому 2 * factorial(1)
.Теперь, что такое factorial(1)
?1 по-прежнему не 0, поэтому 1 * factorial(0)
.Что такое factorial(0)
?Теперь 0 равно 0, поэтому мы знаем, что это 1. Теперь вернемся назад, чтобы включить недостающие фрагменты: если factorial(0)
равно 1, то factorial(1)
равно 1 * 1
, тогда factorial(2)
равно 2 * 1 * 1
.
При рекурсии существует базовый (или завершающий) случай, который известен, а все остальные случаи сводятся к более простым задачам, приближающимся к базовому.Вы знаете factorial(24)
только если вы знаете factorial(23)
, вы знаете factorial(23)
только зная factorial(22)
... но вы знаете factorial(0)
безоговорочно.Если завершающий регистр отсутствует, то вы получите эквивалент бесконечного цикла - бесконечной рекурсии.
Чтобы понять рекурсию, вы должны сначала понять рекурсию.