Проверяет понимание рекурсии как базового приёма программирования и умение объяснить её назначение и риски.
Рекурсивная функция — это функция, которая в своём теле вызывает саму себя. Такой подход называется рекурсией и позволяет решать задачи, которые можно разбить на более простые версии той же задачи. Классические примеры: вычисление факториала, чисел Фибоначчи, обход дерева, поиск в глубину.
Каждый вызов функции создаёт новый кадр в стеке вызовов (call stack). Пока не достигнут базовый случай, вызовы накапливаются. Когда базовый случай срабатывает, стек начинает «разворачиваться» и результаты возвращаются обратно.
function factorial(n) {
if (n <= 1) return 1; // базовый случай
return n * factorial(n - 1); // рекурсивный шаг
}
console.log(factorial(5)); // 120
Итог: рекурсию стоит применять, когда задача естественно сводится к такой же задаче меньшего размера, но важно всегда задавать базовый случай и следить за глубиной вызовов.