我正在参加一个介绍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
谢谢你, 汤姆
答案 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.