Рекурсия — это когда функция вызывает саму себя, сводя задачу к более простой версии той же задачи. У рекурсии всегда две части: базовый случай (когда останавливаемся) и рекурсивный шаг (упрощаем и вызываем себя снова).
Классический пример — факториал n! = 1·2·...·n:
function factorial(n) { if (n <= 1) return 1; // базовый случай return n * factorial(n - 1); // шаг: задача поменьше } factorial(4); // 4 * 3 * 2 * 1 = 24
Важно: без базового случая рекурсия бесконечна и переполнит стек вызовов (ошибка stack overflow). Базовый случай обязателен.
Рекурсия естественна для задач, которые делятся на похожие подзадачи: обход вложенных папок, сортировка слиянием, перебор вариантов. Любую рекурсию можно переписать циклом, но для древовидных структур рекурсивный код часто короче и понятнее.