Что такое рекурсия?
Определение
Это способ решения задач, при котором функция вызывает саму себя.
Работающая рекурсия вызывает саму себя, пока не наступит базовый случай.
Огромная рекурсивная функция вызывает саму себя, пока не переполнится стек. Пример — факториал 1 000 000.
Когда нужна?
Рекурсия необходима, когда нужно выполнить какое-то количество одинаковых действий. Иногда прописать количество действий просто невозможно.
Как работает?
Рекурсия работает за счет заполнения стека вызовов.
Пример кода без рекурсии
Вывести на экран все числа от 1 до 3.
function printNumbers() {
for (let i = 1; i <= 3; i++) {
console.log(i);
}
}
Этот же код с рекурсией
Версия без базового случая
function recursion(i) {
// Объявляем функцию recursion, которая принимает один параметр i
console.log(i); // Выводим текущее значение i в консоль
recursion(i + 1); // Рекурсивно вызываем функцию recursion, увеличивая i на 1
}
recursion(1); // Запускаем функцию recursion с начальным значением i, равным 1
Правильный вызов рекурсии
function recursion(i) {
// Объявляем функцию recursion, которая принимает один параметр i
if (i > 3) {
// Проверяем, если i больше 3
return; // Если условие истинно, функция прекращает выполнение и возвращается
}
console.log(i); // Выводим текущее значение i в консоль
recursion(i + 1); // Рекурсивно вызываем функцию recursion, увеличивая i на 1
console.log(`End of call where i = ${i}`); // После возвращения из рекурсивного вызова выводим сообщение с текущим значением i
}