如何在阶乘过程中解决while循环的这个问题>

问题描述 投票:0回答:2

我尝试用这些代码定义一个阶乘过程,但我得到的结果是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
python factorial
2个回答
0
投票

您应该继续在result上汇总操作:

def factorial(n):
    result = 1
    while n > 1:
        result *= n
        n -= 1
    return result

所以factorial(4)回归:24


0
投票

如果您想改变逻辑,请参阅@blhsing'回答。

实现阶乘的更简单方法是这样的:

def factorial(n):
    if not n:
        return 1
    else:
        return n * factorial(n-1)

请记住,math.factorial也存在。这是您不需要自己构建函数的最佳解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.