Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: recursion, call stack, stack overflow, depth, base case

Как работает глубина рекурсии?

Проверяет понимание механизма рекурсии, глубины стека вызовов и риска переполнения стека.

Короткий ответ

Рекурсия — это вызов функции из самой себя. Глубина рекурсии — это количество вложенных вызовов до достижения базового случая. Каждый вызов добавляет фрейм в стек вызовов. Если глубина слишком велика, стек переполняется (stack overflow).

Длинный ответ

Как работает глубина рекурсии

Рекурсия — это техника, при которой функция вызывает саму себя для решения подзадачи. Глубина рекурсии — это количество последовательных вызовов функции до достижения базового случая (условия выхода). Каждый вызов создает новый фрейм в стеке вызовов (call stack), который хранит локальные переменные и адрес возврата.

Пример на JavaScript

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

В этом примере глубина рекурсии равна 5 (вызовы для n=5,4,3,2,1,0). Каждый вызов ждет результата следующего, пока не достигнет базового случая.

Риск переполнения стека

Если глубина рекурсии слишком велика (например, factorial(100000)), стек может переполниться, так как память ограничена. Это называется stack overflow. В разных языках и средах ограничения разные (обычно несколько тысяч вызовов).

Применение

  • Обход деревьев и графов
  • Алгоритмы сортировки (быстрая сортировка, сортировка слиянием)
  • Задачи, которые естественно разбиваются на подзадачи (факториал, числа Фибоначчи)

Вывод

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#recursion

#call stack

#stack overflow

#depth

#base case

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.