Что эффективнее рекурсия или цикл

Ответ

В большинстве случаев циклы эффективнее рекурсии, так как:

  • Не создают новых вызовов в стеке
  • Потребляют меньше памяти
  • Имеют предсказуемую производительность

Рекурсия может привести к переполнению стека при большой глубине вызовов. Однако, в некоторых случаях рекурсивные решения более читаемы (например, обход деревьев).

Пример с факториалом:

// Цикл
function factorialLoop(n) {
  let result = 1;
  for (let i = 2; i <= n; i++) result *= i;
  return result;
}

// Рекурсия
function factorialRec(n) {
  return n <= 1 ? 1 : n * factorialRec(n - 1);
}

Оптимизация: современные JS-движки поддерживают TCO (Tail Call Optimization), которая позволяет избежать переполнения стека при хвостовой рекурсии.