【发布时间】:2019-03-23 04:57:30
【问题描述】:
我希望这不是重复的,如果是这样,我深表歉意,但是已经进行了一些谷歌搜索并查看了堆栈溢出,但还没有找到任何东西......
MCVE
我知道如果一个函数不断地调用自己,这不可能在没有堆栈溢出的情况下无限期地发生,因此在一定限制后会引发错误。例如:
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
问题
上述错误中的“比较”指的是什么。我想我要问的是这两种情况有什么区别,这会导致两种不同的错误。
【问题讨论】:
-
递归深度在1000左右,所以值太大了。
-
只是猜测:比较的是
n==0,错误信息告诉我们这是一个条件递归。 -
表示比较
n == 0时发生了堆栈溢出。有什么大不了的?
标签: python python-3.x recursion