Python的递归限制?

时间:2017-08-24 18:56:04

标签: python recursion

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

我遇到过像这样增加递归限制:

sys.setrecursionlimit(1500)  

我的问题是在我的情况下是否建议增加这样的递归限制?我见过有人提出反对意见的原因很多。

2 个答案:

答案 0 :(得分:4)

sys.setrecursionlimit(1500) 

非常适合增加递归深度。(在合理范围内!)您没有发布任何代码,但如果存在“波动”,则这不是一个稳定的解决方案。 Python by-and-large不应该用于深度递归。在我看来,你有3个选择: 1.解构函数并迭代地执行操作,而不是递归。

如果你的心真的设置了递归: 2.递归使用Java 3.递归使用C ++

答案 1 :(得分:2)

本身不是解决方案,但您可以利用functools.lru_cache函数装饰器来记忆递归函数并防止它运行到最深处。

如果不了解你正在做什么,很难知道这是否可行。如果它只是一个简单的递归数学函数(例如Fibonacci数),那么你可能会对这种方法有所了解。

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