我正在做一个算法类,我正在构建Kosaraju's algorithm的实现作为家庭作业的一部分。
我有几个小数据集,其中算法返回正确的结果并执行正常。但是,当我尝试我的作业分配中有5,105,043个边缘和875,714个节点时,我得到一个System.StackOverflowException,这似乎是因为递归过多。
但是,这个递归是解决问题所必需的。所以我要问的是有没有办法配置.Net以允许更多的递归?
答案 0 :(得分:3)
所以我要问的是有没有办法配置.Net以允许更多的递归?
递归限制基于为当前线程分配的堆栈大小。这可以是程序的changed via editbin /stack,也可以是在线程构造时为特定的线程编辑的。
话虽如此,任何recursive algorithm can be switched to using a stack instead。随着时间的推移,这可能会更加可维护,因为它不再依赖于非常大的堆栈来进行适当的处理。