def recursive_function(n, sum):
if n < 1:
return sum
else:
return recursive_function(n-1, sum+n)
c = 998
print(recursive_function(c, 0))
它在 n=997 之前都能正常工作,然后就会崩溃并输出一个 "RecursionError: maximum recursion depth exceeded in comparison" 的错误。这只是堆栈溢出吗?有没有办法解决这个问题?
line <n>, in <module>
),对于n=1
,这段代码需要 2 个栈帧(因为基本情况是n < 1
,所以对于n=1
它仍然发生了递归)。我猜测递归深度限制不包括其本身,也就是说,它是“当你达到1000时出错”,而不是“如果你超过1000(1001)就会出错”。997 + 2
小于1000,所以可以正常运行,但998 + 2
则无法运行,因为它达到了限制。 - user3064538