I am having some truble with Recursive Backtracking, i have tried 2 variations, but both overflow the stack. Any ideas would be great
Code:
public Point findPath(Point point){
String temp;
String [] tempA;
temp = point.toString();
tempA = Maze.tokenString(temp, ",");
int y = Integer.parseInt(tempA[0]);
int x = Integer.parseInt(tempA[1]);
if(Maze.isEnd(point)){
return point;
}
Maze.mark(point);
//north
Point n = new Point(y-1,x);
if(Maze.move(n)){
findPath(n);
}
//south
Point s = new Point(y+1,x);
if(Maze.move(s)){
findPath(s);
}
//east
Point e = new Point(y,x+1);
if(Maze.move(e)){
findPath(e);
}
//west
Point w = new Point(y, x-1);
if(Maze.move(w)){
findPath(w);
}
Maze.mark(point);
findPath(point);
return point;
}
Code:
public boolean moveP(Point point, int d){
String temp;
String [] tempA;
temp = point.toString();
tempA = Maze.tokenString(temp, ",");
int y = Integer.parseInt(tempA[0]);
int x = Integer.parseInt(tempA[1]);
switch(d){
case 1:
n.set(y-1,x);
if(Maze.move(n)){
return true;
}
break;
case 2:
e.set(y,x+1);
if(Maze.move(e)){
return true;
}
break;
case 3:
s.set(y+1,x);
if(Maze.move(s)){
return true;
}
break;
case 4:
w.set(y,x-1);
if(Maze.move(w)){
return true;
}
break;
default:
}
return false;
}
public Point findPath(Point point){
if(maze1.isEnd(point)){
return point;
}
maze1.mark(point);
//north
if((moveP(point,1))){
return findPath(n);
}
//east
if((moveP(point,2))){
return findPath(e);
}
//south
if((moveP(point,3))){
return findPath(s);
}
//west
if((moveP(point,4))){
return findPath(w);
}
maze1.mark(point);
return point;
}