Загрузка...
Загрузка...
Рекурсия — это техника в программировании, при которой функция вызывает саму себя для решения задачи.
Каждый рекурсивный вызов работает с меньшей частью исходной задачи, пока не достигнет базового случая, при котором дальнейшие вызовы больше не происходят.
Любая рекурсивная функция должна содержать два основных элемента:
Факториал числа n (n!) — это произведение всех натуральных чисел от 1 до n.
function factorial(n: number): number {
if (n === 1) return 1; // Базовый случай
return n * factorial(n - 1); // Рекурсивный вызов
}
console.log(factorial(5)); // 120
Вызов factorial(5) будет развёрнут так:
factorial(5)
= 5 * factorial(4)
= 5 * 4 * factorial(3)
= 5 * 4 * 3 * factorial(2)
= 5 * 4 * 3 * 2 * factorial(1)
= 5 * 4 * 3 * 2 * 1
= 120
function printArray(arr: number[], index = 0): void {
if (index >= arr.length) return;
console.log(arr[index]);
printArray(arr, index + 1);
}
printArray([10, 20, 30, 40]);
| Характеристика | Рекурсия | Итерация |
|---|---|---|
| Подход | Функция вызывает саму себя | Использует циклы |
| Память | Использует Call Stack | Эффективнее по памяти |
| Сложность понимания | Часто сложнее для новичков | Проще и нагляднее |
| Гибкость | Хороша для рекурсивных структур (деревья, графы) | Отлична для последовательных операций |
Осторожно с переполнением стека:
Рекурсия может привести к переполнению стека (Stack Overflow), если отсутствует базовый случай или слишком глубоко вложенная структура.