StudyCode
Функции, которые вызывают сами себя. Элегантные решения для иерархических задач.
Рекурсия — когда функция вызывает саму себя для решения подзадачи.
function countdown(n) {
if (n <= 0) { // базовый случай — выход
console.log("Пуск!");
return;
}
console.log(n);
countdown(n - 1); // рекурсивный вызов
}
countdown(3);
// 3
// 2
// 1
// Пуск!Базовый случай — условие, при котором рекурсия останавливается. Без него — бесконечный цикл и ошибка "Maximum call stack size exceeded".
Рекурсивный вызов — вызов самой себя с аргументом, который приближает к базовому случаю.
function factorial(n) {
if (n === 0) return 1; // базовый случай
return n * factorial(n - 1); // рекурсивный вызов
}
// factorial(4)
// = 4 * factorial(3)
// = 4 * 3 * factorial(2)
// = 4 * 3 * 2 * factorial(1)
// = 4 * 3 * 2 * 1 * factorial(0)
// = 4 * 3 * 2 * 1 * 1 = 24