如何避免递归MazeSolver中的StackOverflow错误

时间:2018-04-20 06:25:39

标签: java recursion stack-overflow

像大学里的许多其他java学生一样,我需要开发一个解决迷宫问题的迷宫程序。我实现递归的solveMaze方法返回了stackoverflow运行时错误。我该如何解决这个问题?这与我的算法有关吗?提前谢谢。

A)我创建了一个解决方案迷宫,该阵列将保留退出路径。

B)然后,我实施了一个方法Home,每当它被调用时,它就向出口迈出了一步。

注意:solveMaze()方法会检查您移动到的位置是否为墙。

isWall()

2 个答案:

答案 0 :(得分:0)

堆栈溢出错误表示您的递归超出了语言允许的范围。对于小迷宫,这应该不会发生,除非您要重新访问迷宫中的位置。由于您的代码似乎没有做出任何努力来避免这种情况,因此您可能需要修复该问题。

答案 1 :(得分:0)

您有不同的方法来解决问题:

  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); 
    // ...  
  }