我正在尝试制作一个程序,该程序使用一个称为“骑士之旅” check it out on wiki的骑士穿越棋盘的所有正方形(大小并不重要,但现在是6x6)。

游览本来应该是封闭的,这意味着上次访问的广场上的骑士可以“攻击”他开始的广场。该代码在某些正方形上工作良好,例如,main生成器中的输入'traverse(1,1,1)'生成的输出不仅显示了他正在遍历,而且回溯并成功返回了朝目标的遍历。但是,如果我输入“ traverse(1,0,0)”,则会收到StackOverflowError。
由于有时会成功执行,例如回溯和遍历,所以我知道代码是有效的,我只是不知道如何消除错误。我想我打了太多电话,但我不知道该如何解决,有很多广场可供参观:)
修改了代码,主要是因为老师发现我被骗了。

最佳答案

您正在尝试通过递归解决指数复杂性问题。在很小的投入之外,这是行不通的。堆栈大小的增长速度快于问题的大小。通过堆栈不会出现很大的问题。

您不会让StackOverflowErrors消失。您需要重新考虑算法是基于循环的,而不是基于递归的。

关于java - 运行我的“骑士之旅”时出现StackOverflowError(否则几乎完成了),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5200983/

10-10 19:02