Python 中的递归(阶乘函数)

Recursion in Python (factorial function)

我希望这不是一个太愚蠢的问题,但是为什么这个 Python 代码中的 'return 1' 语句 return 是数字的阶乘? 'return True' 也会发生这种情况,据我所知,这等同于 'return 1'

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

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

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

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

所以这就是为什么即使您使用:

也会得到一个数字的阶乘
return True

而不是

return 1

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