Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python的递归限制?_Python_Recursion - Fatal编程技术网

Python的递归限制?

Python的递归限制?,python,recursion,Python,Recursion,我有一个递归编写的程序,由于它的性质,它会急剧波动,从而超过Python的限制。程序的形状也很重要,所以我不想改变它 我遇到过这样增加递归限制的情况: sys.setrecursionlimit(1500) 我的问题是,在我的情况下,这样增加递归限制是否可取?我见过很多人出于各种原因反对它 sys.setrecursionlimit(1500) 对于增加递归深度来说,这是非常好的。(在合理范围内!)您没有发布任何代码,尽管如果存在“剧烈波动”,这不是一个稳定的解决方案。Python基本

我有一个递归编写的程序,由于它的性质,它会急剧波动,从而超过Python的限制。程序的形状也很重要,所以我不想改变它

我遇到过这样增加递归限制的情况:

sys.setrecursionlimit(1500)  
我的问题是,在我的情况下,这样增加递归限制是否可取?我见过很多人出于各种原因反对它

sys.setrecursionlimit(1500) 
对于增加递归深度来说,这是非常好的。(在合理范围内!)您没有发布任何代码,尽管如果存在“剧烈波动”,这不是一个稳定的解决方案。Python基本上不应该用于深层递归。在我看来,您有3种选择: 1.与递归相反,解构函数并以迭代方式进行操作

如果你的心真的在递归上: 2.递归地使用Java
3.使用C++递归递归

< p>不是一个解决方案,实际上,但是你可以利用函数装饰器来记住递归函数并防止它运行到全深度。 如果你不了解自己在做什么,很难知道这是否可行。如果它只是一个简单的递归数学函数(例如斐波那契数),您可能会有一些运气使用这种方法


优点是您不必对代码进行任何结构更改——只需在函数定义的顶部添加@lru_cache(maxsize=None)。

是的,绝对不是“函数”语言。@MrName:如果您想要Python的函数语言扩展,请看,它提供了允许无限递归风格的尾部调用优化。