Ответ
Рекурсия — это когда функция вызывает саму себя. Пример — вычисление факториала:
function factorial(n) {
if (n === 0 || n === 1) { // базовый случай
return 1;
} else {
return n * factorial(n - 1); // рекурсивный вызов
}
}
console.log(factorial(5)); // 120
Ключевые моменты:
- Должен быть базовый случай (условие выхода)
- Каждый шаг должен приближать к базовому случаю
- В JS есть ограничение на глубину рекурсии (стек вызовов)
Рекурсия часто используется для обхода деревьев, работы с вложенными структурами данных.
Ответ 18+ 🔞
Да ты посмотри, какая хитрая жопа придумана — рекурсия! Это ж когда функция, блядь, сама себя вызывает, как ёбанный матрешка, одна в другую лезет. Представь, ты звонишь себе на телефон, чтобы спросить, куда ты положил этот телефон, а в ответ опять свой же голос, и так до бесконечности, пока мозг не накроется медным тазом!
Вот, смотри на этот код, тут всё честно:
function factorial(n) {
if (n === 0 || n === 1) { // базовый случай
return 1;
} else {
return n * factorial(n - 1); // рекурсивный вызов
}
}
console.log(factorial(5)); // 120
Работает это так: чтобы посчитать факториал пяти, надо сначала посчитать факториал четырёх, а для него — трёх, и так далее, пока не допрёшь до единицы. Это и есть базовый случай, стоп-кран, ебать! Без него функция уйдёт в бесконечную петлю и сожрёт всю память, как голодный студент в столовой.
А теперь главное, что надо запомнить, а то пидары налетят:
- Базовый случай обязателен. Это как дно у бочки, без него всё выльется и будет пиздец.
- Каждый шаг должен к этому дну приближать. Если ты
nне уменьшаешь, то ты просто, блядь, сам с собой разговариваешь до посинения. - В JavaScript стек вызовов не резиновый. Глубину рекурсии ограничивают, так что если полезешь считать факториал от миллиона — получишь ошибку, а не ответ. Терпения ноль ебать у движка!
Используют эту магию, например, когда лазают по древовидным структурам — папкам в файловой системе или DOM-дереву. Красиво, но если накосячить с условием выхода — волнение ебать, отладка на всю ночь обеспечена.