【问题标题】:Recursion in Python (factorial function)Python中的递归(阶乘函数)
【发布时间】:2020-07-10 09:37:14
【问题描述】:

我希望这不是一个愚蠢的问题,但是为什么这个 Python 代码中的“return 1”语句会返回一个数字的阶乘? 'return True' 也会发生这种情况,我理解它等同于 'return 1'

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

【问题讨论】:

  • return 1 不会单独返回数字的阶乘;它取决于递归链中已经计算的所有其他值。

标签: python recursion factorial


【解决方案1】:

n == 0 是递归函数的基本情况。 0 的阶乘为 1:reference

一旦基本情况返回 1,语句 return n * factorial(n-1) 将具有以下形式:return n * 1 等等。

【讨论】:

    【解决方案2】:

    在 python 中,当你将一个数字乘以 True 时,它​​会像你乘以一一样运行, 当你将一个数字乘以 False 时,它​​的操作就像你乘以零一样。

    所以这就是为什么即使你使用一个数字也会得到阶乘:

    return True
    

    而不是

    return 1
    

    但是如果你调用 factorial(0) 你会得到 True 而不是 1。

    【讨论】:

      猜你喜欢
      • 2015-04-16
      • 2017-05-07
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 2021-01-25
      • 2012-04-01
      相关资源
      最近更新 更多