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