In my maze generation code, I am getting a stack overflow error, why? How do i fix it? It is only occurring at the end. If i comment out one of the if statements within the else statement, the code works fine. Why is this? I am attempting to recursively generate a maze, and I am not sure if I am doing it right
public void generate(int row, int col) {
rng = new Random();
int move = rng.nextInt(4);
if(hasUnvisited()==false) {
System.out.println("e");
}
else if(move==0&&row+2<=19) {
if (maze[row+2][col].getVisited()==false) {
maze[row+1][col].remove();
}
maze[row][col].visit();
generate(row+2,col);
}
else if(move==1&&row-2>=0) {
if (maze[row-2][col].getVisited()==false) {
maze[row-1][col].remove();
}
maze[row][col].visit();
generate(row-2,col);
}
else if(move==2&&col+2<=19) {
if (maze[row][col+2].getVisited()==false) {
maze[row][col+1].remove();
}
maze[row][col].visit();
generate(row,col+2);
}
else if(move==3&&col-2>=0) {
if (maze[row][col-2].getVisited()==false) {
maze[row][col-1].remove();
}
maze[row][col].visit();
generate(row,col-2);
}
else {
maze[row][col].visit();
if (move==0) {
generate(row-2,col);
}
else if (move==1) {
generate(row+2,col);
}
else if (move==2) {
generate(row,col-2);
}
else if (move==3) {
generate(row,col+2);
}
}
}
Exception in thread "main" java.lang.StackOverflowError
at java.util.Random.<init>(Unknown Source)
at Maze.generate(Maze.java:41)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:94)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:94)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:88)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:88)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:88)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:94)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:94)
at Maze.generate(Maze.java:88)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:88)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:67)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:74)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:60)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:53)
at Maze.generate(Maze.java:67)