使用循环
def factorial_with_loop(n):result = 1for i in range(1, n + 1):result *= ireturn resultprint(factorial_with_loop(5)) 输出 120
使用递归
def factorial_with_recursion(n):if n == 0 or n == 1:return 1else:return n * factorial_with_recursion(n - 1)print(factorial_with_recursion(5)) 输出 120
使用`math`模块
import mathprint(math.factorial(5)) 输出 120

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