def factorial(n):
if n == 0:
return 1 # Базовый случай
else:
return n * factorial(n-1) # Рекурсивный вызов
Рекурсия в Python - это техника программирования, когда функция вызывает саму себя для решения более мелких подзадач. Важно, чтобы рекурсивная функция имела базовый случай, который определяет, когда рекурсия должна остановиться. Без базового случая функция будет вызывать себя бесконечно, что приведет к ошибке RecursionError
.
Вот простой пример реализации рекурсии для вычисления факториала числа:
def factorial(n):
"""
Вычисляет факториал числа n рекурсивно.
"""
# Базовый случай: факториал 0 равен 1
if n == 0:
return 1
else:
# Рекурсивный случай: n! = n * (n-1)!
return n * factorial(n-1)
# Пример использования
result = factorial(5)
print(f"Факториал 5 равен: {result}") # Вывод: Факториал 5 равен: 120
Разъяснение:
factorial(n)
принимает целое число n
в качестве аргумента.n
равно 0, функция возвращает 1 (факториал 0 равен 1). Это останавливает рекурсию.n
больше 0, функция возвращает n
, умноженное на результат вызова factorial(n-1)
. Это означает, что функция вызывает саму себя с уменьшенным значением n
.Важные моменты при использовании рекурсии:
RecursionError
. В таких случаях может быть лучше использовать итеративное решение (цикл). Высоту рекурсии можно увеличить с помощью sys.setrecursionlimit(limit)
, но это не рекомендуется делать без крайней необходимости, так как это может привести к проблемам с памятью.В целом, рекурсия – это мощный инструмент для решения задач, которые можно естественным образом разбить на более мелкие подзадачи того же типа. Однако важно использовать рекурсию с осторожностью и учитывать ее ограничения.