像大学里的许多其他java学生一样,我需要开发一个解决迷宫问题的迷宫程序。我实现递归的solveMaze方法返回了stackoverflow运行时错误。我该如何解决这个问题?这与我的算法有关吗?提前谢谢。
A)我创建了一个解决方案迷宫,该阵列将保留退出路径。
B)然后,我实施了一个方法Home
,每当它被调用时,它就向出口迈出了一步。
注意:solveMaze()
方法会检查您移动到的位置是否为墙。
isWall()
答案 0 :(得分:0)
堆栈溢出错误表示您的递归超出了语言允许的范围。对于小迷宫,这应该不会发生,除非您要重新访问迷宫中的位置。由于您的代码似乎没有做出任何努力来避免这种情况,因此您可能需要修复该问题。
答案 1 :(得分:0)
您有不同的方法来解决问题:
-Xss
选项increase stack size solveMaze
方法中,例如: public void showPath() {
// ...
if (solveMaze(sol, m.length - 1, 0, exitCords , 0) == false) {
// ...
}
public boolean solveMaze(int[][] sol, int y, int x, int[] exitCords, int depth) {
if (depth > 64) {
return false;
}
// ...
solveMaze(sol, y, x, exitCords, depth + 1);
// ...
}