Ответ
Рекурсия — это когда функция вызывает саму себя, прямо или через другие функции. Главное условие — должен быть базовый случай (условие выхода), иначе будет бесконечный вызов и переполнение стека.
Пример с факториалом:
function factorial(n) {
if (n === 1) return 1; // базовый случай
return n * factorial(n - 1); // рекурсивный вызов
}
console.log(factorial(5)); // 120
Особенности:
- Может быть менее эффективна по памяти, чем итеративный подход
- Подходит для задач с вложенной структурой (деревья, JSON)
- В JS есть ограничение на глубину рекурсии (обычно ~10k вызовов)
- Хвостовую рекурсию можно оптимизировать (TCO)