使用循环
def factorial_with_loop(n):
result = 1
for i in range(1, n + 1):
result *= i
return result
print(factorial_with_loop(5)) 输出 120
使用递归
def factorial_with_recursion(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial_with_recursion(n - 1)
print(factorial_with_recursion(5)) 输出 120
使用`math`模块
import math
print(math.factorial(5)) 输出 120
使用`reduce`函数
from functools import reduce
def factorial_with_reduce(n):
return reduce(int.__mul__, range(1, n + 1), 1)
print(factorial_with_reduce(5)) 输出 120
使用`functools.partial`
from functools import partial
def partial_factorial(n):
return partial(lambda x, y: x * y, n, n - 1)(n)
print(partial_factorial(5)) 输出 120
以上是计算阶乘的几种常见方法,你可以根据具体需求选择合适的方法。需要注意的是,对于非常大的数,递归可能会导致栈溢出,而循环方法则更为稳定。