我正在使用一种迷宫算法,该算法有时会起作用,但并非总是起作用。它使用递归,但我无法弄清楚为什么它一直都没有。
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;
}
}
最佳答案
我认为该函数应在isFinish为true时立即返回。就像现在一样,该函数可能会找到终点位置,但随后会继续循环并可能在返回之前从该位置移开。
关于java - 迷宫算法KINDA起作用。有些迷惑,不是全部帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7523124/