我尝试用这些代码定义一个阶乘过程,但我得到的结果是n ^ 2,而不是n *(n-1)*(n-2)...... 1。当i = n时,似乎只实现了一次。我很困惑,有什么问题?
def factorial(n):
i = 1
while n >=i:
result = i * n
i = i + 1
return result
您应该继续在result
上汇总操作:
def factorial(n):
result = 1
while n > 1:
result *= n
n -= 1
return result
所以factorial(4)
回归:24
如果您想改变逻辑,请参阅@blhsing'回答。
实现阶乘的更简单方法是这样的:
def factorial(n):
if not n:
return 1
else:
return n * factorial(n-1)
请记住,math.factorial
也存在。这是您不需要自己构建函数的最佳解决方案。