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

Рекурсия

Задача 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). Базовый случай обязателен.

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

Назад

Обсуждение

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

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