2011-09-23 47 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。就像現在一樣,該函數可能會找到完成位置,但它會繼續循環,並可能在返回之前從該位置移開。