因子0的def如何返回1

时间:2015-12-09 01:32:57

标签: python while-loop function

我正在参加一个介绍python类。下面是我们的问题之一,我们必须创建一个程序来查找数字的阶乘。我不明白当我输入数字0时,它返回数字1.

如果输入factorial(0),是否有任何乘以0将变为0?那么,它如何产生数字1作为答案呢?

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

print factorial(0)
#>>> 1

谢谢你, 汤姆

2 个答案:

答案 0 :(得分:0)

一种简单的方法是添加

if n == 0:
    result = 0

所以代码是

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

print factorial(0)

基本上发生的事情是因为零大于一,while循环从未开始,因此从未改变result。因为result的默认值是1,所以返回的是。希望这会有所帮助。

编辑:正如用户指出的那样" Haris"因子零实际上是一个。但是,如果你想知道为什么python会产生这个结果,如上所述。

答案 1 :(得分:0)

由falsetru提供的答案:

0> = 1为False ...因此循环体永远不会执行,结果最初定义为1,因此返回结果为1.