我写了一个 Python 函数来计算一个数字的阶乘,就像这样;
def fact(n):
return {0: 1}.get(n, n * fact(n-1))
我惊讶地发现它会导致无限递归,即使对于fact(0)
. 然后我添加了一个断言,就像这样;
def fact(n):
assert n >= 0
return {0: 1}.get(n, n * fact(n-1))
但是这一次 AssertionError 被提出,意思n
变成了否定的。我不明白这一点。我在网上查到了这个。但是,不幸的是找不到任何答案。请有人可以向我解释这里发生了什么?