2011-09-23 74 views
2

我正在使用迷宫算法,它适用于某些时间,但并非全部时间。它使用递归,但我不明白为什么它不会一直。迷宫算法KINDA的作品。一些迷宫,并非全部帮助

public boolean findPath(int x, int y) { 
    myArray[x][y] = "T"; // marks coordinate T for traveled 
    printMaze(); // prints the current state of the maze 

    if (x == finish[0] && y == finish[1]) { // base case: if at finish, solved. 
     isFinish = true; 
     return isFinish; 
    } else { 
     isFinish = false;     // not at finish 
     for (int i = -1; i <= 1; i++) { 
      for (int j = -1; j <= 1; j++) { 
       if (i * j == 0 && i != j && canIGoHere(x+i, y+j) && !isFinish) { 
        isFinish = findPath(x + i, y + j); 
       } 
      } 
     } 
     return isFinish; 
    } 
} 
+1

你可能会开始添加适当的身份它可能对你有好处,但我们大多数人(至少我自己)不习惯它。 – OscarRyz

回答

2

我认为函数应该尽快返回isFinish为true。就像现在一样,该函数可能会找到完成位置,但它会继续循环,并可能在返回之前从该位置移开。