我正在做一个算法课,我正在构建Kosaraju 算法的实现作为作业的一部分。
我有几个小数据集,其中算法返回正确的结果并且性能良好。但是,当我尝试我的家庭作业时,它有 5,105,043 个边和 875,714 个节点,我得到一个 System.StackOverflowException,这似乎是因为递归太多。
然而,这个递归是解决这个问题所必需的。那么我要问的是有没有办法配置.Net 以允许更多递归?
我正在做一个算法课,我正在构建Kosaraju 算法的实现作为作业的一部分。
我有几个小数据集,其中算法返回正确的结果并且性能良好。但是,当我尝试我的家庭作业时,它有 5,105,043 个边和 875,714 个节点,我得到一个 System.StackOverflowException,这似乎是因为递归太多。
然而,这个递归是解决这个问题所必需的。那么我要问的是有没有办法配置.Net 以允许更多递归?
那么我要问的是有没有办法配置.Net 以允许更多递归?
递归限制基于为当前线程分配的堆栈大小。这可以通过程序的 editbin /stack 进行更改,或者在线程构建时为特定线程进行编辑。
话虽如此,任何递归算法都可以改为使用堆栈。随着时间的推移,这可能会证明更易于维护,因为它不再依赖于有一个非常大的堆栈来适当地处理。