Приведи пример использования рекурсии

Ответ

Рекурсия — это когда функция вызывает саму себя. Пример — вычисление факториала:

function factorial(n) {
  if (n === 0 || n === 1) { // базовый случай
    return 1;
  } else {
    return n * factorial(n - 1); // рекурсивный вызов
  }
}

console.log(factorial(5)); // 120

Ключевые моменты:

  1. Должен быть базовый случай (условие выхода)
  2. Каждый шаг должен приближать к базовому случаю
  3. В JS есть ограничение на глубину рекурсии (стек вызовов)

Рекурсия часто используется для обхода деревьев, работы с вложенными структурами данных.

Ответ 18+ 🔞

Да ты посмотри, какая хитрая жопа придумана — рекурсия! Это ж когда функция, блядь, сама себя вызывает, как ёбанный матрешка, одна в другую лезет. Представь, ты звонишь себе на телефон, чтобы спросить, куда ты положил этот телефон, а в ответ опять свой же голос, и так до бесконечности, пока мозг не накроется медным тазом!

Вот, смотри на этот код, тут всё честно:

function factorial(n) {
  if (n === 0 || n === 1) { // базовый случай
    return 1;
  } else {
    return n * factorial(n - 1); // рекурсивный вызов
  }
}

console.log(factorial(5)); // 120

Работает это так: чтобы посчитать факториал пяти, надо сначала посчитать факториал четырёх, а для него — трёх, и так далее, пока не допрёшь до единицы. Это и есть базовый случай, стоп-кран, ебать! Без него функция уйдёт в бесконечную петлю и сожрёт всю память, как голодный студент в столовой.

А теперь главное, что надо запомнить, а то пидары налетят:

  1. Базовый случай обязателен. Это как дно у бочки, без него всё выльется и будет пиздец.
  2. Каждый шаг должен к этому дну приближать. Если ты n не уменьшаешь, то ты просто, блядь, сам с собой разговариваешь до посинения.
  3. В JavaScript стек вызовов не резиновый. Глубину рекурсии ограничивают, так что если полезешь считать факториал от миллиона — получишь ошибку, а не ответ. Терпения ноль ебать у движка!

Используют эту магию, например, когда лазают по древовидным структурам — папкам в файловой системе или DOM-дереву. Красиво, но если накосячить с условием выхода — волнение ебать, отладка на всю ночь обеспечена.