me_edu
Алгоритмы и структуры данных: основыШаг 27 из 31 · 0% пройдено
Рекурсия, деревья и графы · Рекурсия, деревья и графы

Рекурсия

Шаг 27 из 317 минТеория
Цель

Понять основной механизм темы «Рекурсия» без заучивания отдельных терминов.

Как работать

Прочитайте блок один раз целиком, затем вернитесь к схеме или примеру и перескажите идею своими словами.

Критерий

Сформулированное правило, пример применения и одно ограничение метода.

ITERATION CYCLEЗадача nБазовый случай?Вызов n-1
Рекурсия: функция упрощает задачу и вызывает себя, пока не дойдёт до базы
Опорная идея

Рекурсия — это когда функция вызывает саму себя, сводя задачу к более простой версии той же задачи. У рекурсии всегда две части: базовый случай (когда останавливаемся) и рекурсивный шаг (упрощаем и вызываем себя снова).

Классический пример — факториал 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). Базовый случай обязателен.

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

Назад

Обсуждение

Войдите, чтобы участвовать в обсуждении.

Пока нет сообщений.