我希望这不是一个重复的问题,如果是,我很抱歉,但我已经在谷歌和Stack Overflow上查找过了,目前还没有发现什么...
最小完整可工作示例
我知道如果一个函数不断地调用自己,那么这个过程就不能无限制地进行下去,否则会出现堆栈溢出,因此在达到一定限制后会引发错误。例如:
def foo():
return foo()
foo()
这会引起以下错误:
RecursionError: maximum recursion depth exceeded
然而,如果我编写下面这样的函数:
def count(n):
if n == 0:
return 0
else:
return count(n-1)+1
count(1000)
我得到了稍微不同的错误:
RecursionError: maximum recursion depth exceeded in comparison
问题
在上述错误中,“in comparison”是指什么?我的问题是这两种情况之间有何区别,导致出现了两个不同的错误。
n==0
,错误信息告诉我们这是一种条件递归。 - PM 2Ringn == 0
中发生了堆栈溢出。这有什么大不了的? - Aran-Fey