为什么return 1输出阶乘而return 0输出0?

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

我在这里使用Python。我搜索了

return 1
return 0
的区别,它说0表示True,1表示False0 表示函数运行成功,1 表示有错误或有问题。所以它不应该改变输出,它只是结束循环并指定 True 或 False 的一种方法。

当我运行此代码时:

def factorial(num):
  if num != 0:
    return num * factorial(num - 1)
  else:
    return 1
    
print(factorial(10))

它输出答案,阶乘。在本例中,它是 3628800

但是如果我运行相同的代码但将

return 1
更改为
return 0
,它会输出 0

这是为什么?

python recursion return factorial
1个回答
0
投票

答案与 1 和 0 的布尔值无关。当 num=0 时,您的递归函数有一个停止条件。因此,如果从最内层递归返回 0,调用者将返回 num * 0,即 0。 这将一直传播到顶部,因此您的函数将返回 0。另一方面,如果到达结束条件时返回 1,该函数将按照您的预期计算阶乘。

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