Факториал — это классическая математическая операция, где n! = n × (n-1) × ... × 1. Python предлагает несколько способов её вычисления, каждый со своими компромиссами.
Рекурсивная функция вызывает саму себя с уменьшающимся значением, пока не достигнет базового случая:
def factorial(n):
return 1 if n <= 1 else n * factorial(n - 1)
print(factorial(5)) # 120
sys.getrecursionlimit())RecursionError на больших входных значенияхМодуль math в Python предлагает оптимизированное решение, готовое к production:
import math
print(math.factorial(5)) # 120
Простой цикл полностью обходит проблемы с глубиной рекурсии:
def factorial(n):
result = 1
for i in range(2, n + 1):
result *= i
return result
math.factorial() для реального кода — это оптимизировано и надёжно0! = 1Рекурсивная реализация факториала на Python всегда будет падать для любого входного значения больше 1000 из-за лимита рекурсии по умолчанию, в то время как math.factorial() может работать с произвольно большими числами.
Новый — ещё не проверен сообществом
Вы