OriginalGriff
В этом коде нет рекурсии: если fn
если бы он был рекурсивным, то он не работал бы, так как нет никакого способа "ограничить" его от бесконечной рекурсии - вам действительно нужен параметр, чтобы сделать это, или ваше приложение просто снесет верхнюю часть стека и рухнет.
Это рекурсивно:
int factorial(int n)
{
if (n <= 1) return 1;
return n * factorial(n - 1);
}
Потому что он называет
factorial
функция изнутри
factorial
функция. Поскольку значение параметра изменяется каждый раз, когда он вызывается, ограничивающая проверка "один или меньше" предотвращает бесконечную рекурсию и в конечном итоге дает правильный результат.
Я бы посоветовал вам вернуться к вашим курсовым заметкам для последней лекции и вашему домашнему заданию и прочитать их снова, очень внимательно!