嗨即時通訊新的跟蹤Java中的網站很抱歉,如果這是一個重複的問題,但沒有以前的問題似乎符合我的遞歸早在迷宮
我練了迷宮結構中的搜索算法和我在遞歸回溯嘗試不工作
基本上我都跟着一本書Dietel卷7上鍛鍊創造一個迷宮和使用遞歸來找到解決辦法,但我所有的代碼所做的是:
- 認定起始位置。
- 到達下一個位置
- 然後說,有沒有其他的移動和退出程序
這是我的方法,它知道它的體積龐大,但即時通訊仍然在它
public boolean mazeTraversal(char maze2[][], int x, int y)
{
lastX = x;
lastY = y;
maze[ x ][ y ] = 'x';
printMaze();
showPosition();
showMoves();
System.out.println("Press the key 'g' to traverse the maze : ");
move++;
if((x == Y_START) && (x == X_START) && (move > 1))
{
System.out.println("You have gone back to the start");
return false;
}
else if (mazeExited(x, y) && (move > 1))
{
System.out.println("You have reached the end");
return true;
}
else
{
char response = scanner.nextLine().charAt(0);
showPosition();
showMoves();
System.out.println("Enter 'g' to continue, 'e' to exit: ");
if(response == 'e')
{
System.exit(0);
}
if(response == 'g')
while(checkMaze(x,y) == validMove(x,y) && checkMaze(x,y)!= mazeExited(x,y))
{
for(int count = 0; count < 4; count++)
{
switch (count)
{
case (DOWN):
if (validMove(x + 1, y))
{
mazeTraversal(maze2, x + 1, y);
}
break;
case (RIGHT):
if (validMove(x, y + 1))
{
mazeTraversal(maze2, x, y + 1);
}
break;
case (UP): // move up
if (validMove(x - 1, y))
{
mazeTraversal(maze2, x - 1, y);
}
break;
case (LEFT): // move left
if (validMove(x, y - 1))
{
mazeTraversal(maze2, x, y - 1);
}
}
}
}
}
return false;
}工作
任何指針都會很棒。 謝謝邁克
你有沒有試圖追蹤你的代碼,看看它出錯了?實際上沒有人會爲你做這件事,所以你應該先調試,然後回來一個更具體的問題,如果你想。祝你好運。 – Egor
感謝您的快速反應,特別注意這個問題。 –