LogoData Structures & Algorithms

Рекурсия: факториал

Рекурсивная функция вызывает саму себя.

Функция по нахождению факториала вычисляет n! рекурсивно. База: 0! = 1, 1!= 1.

Для n > 1 возвращаетn * factorial(n - 1). Рекурсия последовательно уменьшает n до базы и затем «разворачивается» произведениями.

Сложность:

Время – O(n), Память (стек) – O(n)

factorial.ts
1function factorial(n: number): number {
2 if (n < 0) throw new Error('n must be >= 0');
3 return n <= 1 ? 1 : n * factorial(n - 1);
4}
5
6factorial(0) // -> 1
7factorial(1) // -> 1
8factorial(5) // -> 120
9factorial(7) // -> 5040
10