我将我的迷宫放在一个类中,并将我的递归放在一个布尔值中,因此每当我尝试打印它时,它都会回调该类并打印原始地图而不是进度。你还有其他办法吗?
class Maze {
String[][] (map of the maze)
public void print_maze () {
bla bla bla
} // print the maze
public boolean solve (int i, int j) throws InterruptedException {
Maze labyrinth = new Maze();|
|i tried to print the maze like this
labyrinth.print_maze(); |and they keep printing original maze
|
boolean done = false;
if (valid (i, j)) {
grid[i][j] = "C"; // cell has been tried
if (i== grid[0].length-8 && j == grid[0].length-1)
{done = true;} // maze is solved
else {
done = solve (i+1, j); // down
if (!done)
done = solve (i, j+1); // right
if (!done)
done = solve (i-1, j); // up
if (!done)
done = solve (i, j-1); // left
}
if (done) // part of the final path
grid[i][j] = "X";
// labyrinth.print_maze();
}
return done;
答案 0 :(得分:1)
你遇到的问题是,你没有区分你的执行类和你的对象(尝试让你的迷宫课外的执行课,你会看到,我的意思)。你应该尝试类似的东西:
labyrinth.grid[i][j]="x";
代替你最后一行中的代码,因为你的对象迷宫是你要改变的对象,而不是你所在的迷宫:-)。或者,您可以在没有print_maze()
的情况下致电labyrinth
,因为您已经在myTasks
。