Давайте рассмотрим простейший случай рекурсивной функции.
int foo(int n)
{
return foo(n-1);
}
Если вы хотите вычислить foo(5)
, то функции foo
потребуется вычислить foo(4)
перед возвратом. Но то же самое относится и к foo(4)
. Сначала нужно вычислить foo(3)
. Таким образом, нет значения для n
, когда функция не должна вызывать себя, поэтому повторяется бесконечно. В теории это так. На практике это потерпит крах.
Те случаи, которые не вызывают рекурсивный вызов, называются базовые случаи .