Факториал часто используется как пример чего-то, что может быть выполнено с использованием рекурсии.
Например, факториал 5 рассчитывается следующим образом:
5! = 5 * 4 * 3 * 2 * 1
Кроме того, есть еще один способ думать об этом:
5! = 5 * 4!
4! = 4 * 3!
3! = 3 * 2!
2! = 2 * 1!
1! = 1
Как пишется вторая серия равенств, видно, что факториал может быть вычислен рекурсивным способом. Например:
5! = 5 * 4! --> 5! = 5 * (4 * 3!) --> 5! = 5 * (4 * (3 * 2!)) --> and so on.
Функция fact
в вопросе выполняет факториальную функцию, как написано во второй серии равенств:
fact(n) = n * fact(n-1);
Итак, когда вызывается метод fact
, способ его вызова можно представить как что-то вроде следующего:
fact(5) --> fact(5 * fact(4)) --> fact(5 * fact(4 * fact(3))) --> and so on.
Кроме того, следует отметить, что, как указывает Кип в комментариях, вычисление факториала числа можно легко и быстро рассчитать путем перебора диапазона чисел от n
до 1
и умножения это вместе, чтобы вычислить результат.