미로 구축에 필요한 모든 것이 포함 된 코드가 제공되었습니다. 제 직업은 미로 해결에 사용 된 makeMove
방법을 쓰는 것입니다. 행과 열의 미로 재귀 오류
protected void makeMove(int row, int col)
{
int MAX_ROWS = maze.length;
int MAX_COLS = maze.length;
boolean found = false;
boolean[][]visited = new boolean[MAX_ROWS][MAX_COLS];
//visited[startRow][startCol] = true;
if (row < 0 || row >= MAX_ROWS || col < 0 || col >= MAX_COLS || visited[row][col] || maze[row][col] == 1)
return;
visited[row][col] = true;
found = row == endRow && col == endCol;
/*if(row == endRow && col == endCol) {
found = true;
}*/
if(!found && maze[row][col - 1]!=1 && !visited[row][col]) { // move left
makeMove(row, col -1);
visited[row][col -1] = true;
}
if(!found && maze[row - 1][col]!=1 && !visited[row-1][col]) { // move up
makeMove(row-1, col);
visited[row-1][col] = true;
}
if(!found && maze[row][col + 1]!=1 && !visited[row][col + 1]) { // move right
makeMove(row, col + 1);
visited[row][col + 1] = true;
}
if(!found && maze[row + 1][col]!=1 && !visited[row + 1][col]) { // move down
makeMove(row + 1, col);
visited[row + 1][col] = true;
}
8 행과 8 열이있는 미로에 다음과 같이 실행
, 나는 스택 오버플로 오류가 계속 : 이것은 내가 지금까지 가지고있는 것입니다.저는 오류가
42. MakeMove(row-1, col); //to move up
및 50.makeMove(row + 1, col); //to move down
될 라인 (42) 및 라인 (50)에 있음을 나타내는 것으로 판단.
이 두 가지에 논리적 오류가 있습니까?