Python中最大递归深度是多少,如何增加?

这个尾部递归函数:

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。这只是堆栈溢出吗?有办法解决吗?

回答:

是的,可以防止堆栈溢出。Python(或更确切地说,CPython实现)不能优化尾部递归,无限制的递归会导致堆栈溢出。你可以使用来检查递归限制,sys.getrecursionlimit并使用来更改递归限制sys.setrecursionlimit,但是这样做很危险-标准限制有些保守,但是Python堆栈框架可能会很大。

Python不是一种功能语言,尾部递归并不是一种特别有效的技术。如果可能的话,迭代地重写算法通常是一个更好的主意。

以上是 Python中最大递归深度是多少,如何增加? 的全部内容, 来源链接: utcz.com/qa/418638.html

回到顶部