Python-курс
🌀 Рекурсия

Что такое рекурсия

Функция, которая вызывает саму себя.

~30 минСредний 2 урока

Матрёшка внутри матрёшки

Откройте матрёшку — внутри матрёшка поменьше, внутри неё ещё меньше, и так до самой крошечной, которую уже не открыть. РекурсияПриём, при котором функция вызывает саму себя. Нужен базовый случай, чтобы вызовы завершились. устроена так же: функцияИменованный блок кода, который можно вызывать многократно. Может принимать аргументы и возвращать результат. решает задачу, вызывая саму себя для задачи поменьше, и так до самого простого случая, который решается сразу.

У любой рекурсии есть две обязательные части:

  • Базовый случай — самая маленькая матрёшка, которая не открывается. Здесь рекурсия останавливается.
  • Шаг рекурсии — вызов самой себя для задачи поменьше, приближающий к базовому случаю.
countdown.py

Проследим вызовы: countdown(3) печатает 3 и зовёт countdown(2), тот печатает 2 и зовёт countdown(1), далее countdown(0) — это базовый случай, он печатает «Пуск!» и возвращается, не вызывая себя. Стопка вызовов «схлопывается» обратно.

🚫Внимание

Без базового случая рекурсия бесконечна. Если функция всегда зовёт себя и никогда не останавливается, Python досчитает до предела глубины вызовов и упадёт с ошибкой RecursionError. Базовый случай так же обязателен, как условие выхода у while.

Шаг 1 из 7