'Maze solver gets stuck in a loop (Stack overflow error)
My recursive solver gets stuck at a dead end and can't turn around, causing a stack overflow error. Where am I going wrong?
solI is a public array. x2 and y2 are public solution coordinates.
0-wall
1-open path
2-tried
3-solution
RECURSIVE SOLVER
public static boolean traverse(int x1, int y1) {
boolean done = false;
count++;
if ((count < 100) && (x1 >= 0) && (x1 < solI.length) && (y1 >= 0) && (y1 < solI.length) && (solI[x1][y1] == 1)) {
solI[x1][x1] = 2;
if ((x1 == x2) && (y1 == y2)) {
done = true;
} else {
if (!done) { //up
done = traverse(x1 - 1, y1);
}
if (!done) {//left{
done = traverse(x1, y1 - 1);
}
if (!done) {//down{
done = traverse(x1 + 1, y1);
}
if (!done) {//right
done = traverse(x1, y1 + 1);
}
}
if (done) solI[x1][y1] = 3;
}
return done;
}
Solution 1:[1]
The problem is in line 5 of your code. This solI[x1][x1] = 2; should be changed to this solI[x1][y1] = 2;. Also forget about the count. Having max count = 100 would cause problem in matrices with dimensions more than 10 * 10.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Lrrr |
