我遇到了一个大问题,我需要数千层递归,但是python不允许我这样做。当我在Windows系统上构建它时,也很难找到解决方案。本质上,递归在堆栈上运行,在非基于UNIX的系统中,很难弄乱堆栈。
如果您正在寻找适用于UNIX的最简单的解决方案:
import sys
sys.setrecursionlimit(20000)
但是,正如我提到的,这在Windows上对我不起作用。我需要提出解决方案或切换操作系统。
我遇到了一个大问题,我需要数千层递归,但是python不允许我这样做。当我在Windows系统上构建它时,也很难找到解决方案。本质上,递归在堆栈上运行,在非基于UNIX的系统中,很难弄乱堆栈。
如果您正在寻找适用于UNIX的最简单的解决方案:
import sys
sys.setrecursionlimit(20000)
但是,正如我提到的,这在Windows上对我不起作用。我需要提出解决方案或切换操作系统。
为了解决这个问题,我有了使用多线程为我提供多个堆栈的疯狂想法。我真的不知道这是否行得通,然后再尝试。我通常讨厌多线程,但这是一个非常基本的版本。我确信其他人可以对此进行改进。在我的最终产品中,我将多线程实现到我的回溯算法中。
这是基本思想。需要注意的是,如果要从线程中获取值,则需要将它们存储(并传递)为可变对象(如列表)。
如果您不熟悉线程(例如我),需要注意的另一件事是您需要.start()您的线程。更重要的是,.join()将在继续执行之前等待线程完成。这使得程序可以正常运行,只是使用线程的这个实例允许您欺骗堆栈限制。