我在这里有这个尾递归函数:
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
。这只是堆栈溢出吗?有没有办法绕过它?
原文由 quantumSoup 发布,翻译遵循 CC BY-SA 4.0 许可协议
✓ 已被采纳
它可以防止堆栈溢出,是的。 Python(或者更确切地说,CPython 实现)不会优化尾递归,并且肆无忌惮的递归会导致堆栈溢出。您可以使用
sys.getrecursionlimit
检查递归限制:看起来你只需要 设置更高的递归深度 :