我正在尝试制作一个程序,通过棋盘的所有正方形(大小并不重要,但现在它是6x6)与骑士,称为“骑士之旅”check it out on wiki。 / p>
巡回赛应该被关闭,这意味着最后一个参观过的广场上的骑士可以“攻击”他开始的广场。该代码适用于某些正方形,例如,main中的输入'traverse(1,1,1)'生成输出,不仅显示他正在遍历而且回溯并返回到成功遍历目标。但是,如果我输入'traverse(1,0,0)',我会得到 StackOverflowError 。 由于它有时成功,回溯和遍历,我知道代码有效,我只是不知道如何摆脱错误。我假设我打的电话太多了,但是我不知道如何解决这个问题,有很多方格可以参观:) 编辑了代码,主要是因为老师可以找到我作弊的说法。
答案 0 :(得分:4)
您正在尝试使用递归来解决指数复杂性问题。这不会在非常小的投入之外发挥作用。堆栈大小的增长速度比问题的大小快。吹掉堆栈不会占用很大的问题。
你不会让StackOverflowErrors消失。您需要重新考虑您的算法是基于循环而不是基于递归。