📅  最后修改于: 2023-12-03 14:47:53.637000             🧑  作者: Mango
给定一个正整数 n,计算 n! 的值。
一般使用递归的方法求某个正整数的阶乘。递归公式为:n! = n * (n-1)!
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
但是,递归算法的时间复杂度为 O(n),如果 n 较大,则会出现栈溢出或超时的问题。因此,我们可以使用循环的方式来解决这个问题。
以下是使用循环算法实现计算 n! 的 Python 代码片段。
def factorial(n):
result = 1
for i in range(2, n+1):
result *= i
return result
以下是测试示例。
assert factorial(0) == 1
assert factorial(1) == 1
assert factorial(2) == 2
assert factorial(3) == 6
assert factorial(4) == 24
assert factorial(10) == 3628800
本文介绍了使用递归和循环方式来实现计算 n! 的方法。在实际应用中,由于递归算法的时间复杂度较高,循环方式更推荐使用。