Рекурсия - это концепция в программировании, при которой функция вызывает саму себя. Рекурсивная функция состоит из базового случая (base case) и инструкции для вызова самой себя с аргументами, которые приближают к базовому случаю.
Как работает рекурсия? При вызове рекурсивной функции, происходит следующее:
- Функция проверяет базовый случай. Если он достигнут, функция возвращает результат.
- Если базовый случай не достигнут, функция вызывает саму себя с аргументами, которые приближают к базовому случаю.
- Процесс повторяется до достижения базового случая, после чего результаты возвращаются по цепочке вызовов.
Пример рекурсивной функции на Python для вычисления факториала числа:
def factorial(n): if n == 0: # базовый случай return 1 else: return n * factorial(n - 1) # вызов самой себя с новым аргументом
При вызове функции factorial(5)
, происходят следующие шаги:
factorial(5)
вызываетfactorial(4)
factorial(4)
вызываетfactorial(3)
factorial(3)
вызываетfactorial(2)
factorial(2)
вызываетfactorial(1)
factorial(1)
вызываетfactorial(0)
factorial(0)
возвращает 1- Результаты начинают возвращаться обратно и вычисляются правильно:
1 * 1 = 1
,2 * 1 = 2
,3 * 2 = 6
,4 * 6 = 24
,5 * 24 = 120
Рекурсия - мощный инструмент программирования, однако её следует использовать с осторожностью из-за потенциальных проблем с производительностью и возможным переполнением стека вызовов (stack overflow), если не ограничить количество рекурсивных вызовов.