이 재귀를 수행 할 때 stackoverflow 오류가 발생합니다. 패턴이있다,이 첫 번 말한다 :재귀를 수행 할 때 Stackoverflow
라인 MazeGui.move (MazeGui.java:79)에서경우 (참 rigting.goal == ) {
및 그것은 다음 두 가지를 말하고, 둘 다 출력에서 매우 오랜 시간 동안 반복됩니다. 문제는 어디 난 그냥 잘 모르겠어요 여기에 무슨 일이 일어나고 있는지 :
라인 이동 (rigting.right, POS)입니다 MazeGui.move (MazeGui.java:89) 에서가 나는 종료 조건 또는 뭔가를 놓치고 있습니까이 일어나고 어떤 무한 재귀가 ...; // 이동 라인 움직임이다 MazeGui.move (MazeGui.java:107) 에서 오른쪽
(rigting.left, POS); // 이동
...
를 왼쪽? 나는 그 주위에 내 머리를 감쌀 수 없다. 완전히 잃어 버렸다. 어떤 도움을 주시면 감사하겠습니다.
코드 : 당신이 뭔가를 시도 할 수도
public boolean move(Maze rigting, int pos)
{
if (rigting.goal == true)
{
return true;
}
if (rigting.wallR != true)
{
pos += 1;
move(rigting.right, pos); //moves right
showLabel(pos);
return true;
}
if(rigting.wallD != true) //checks if there is a wall below
{
pos += 10;
move(rigting.down, pos); //moves down
showLabel(pos);
return true;
}
if(rigting.wallL != true) //checks if there is a wall on the left
{
pos -= 1;
move(rigting.left, pos); //moves left
showLabel(pos);
return true;
}
if(rigting.wallU != true) //checks if there is a wall above
{
pos -= 10;
move(rigting.up, pos); //moves up
showLabel(pos);
return true;
}
return false;
}
예. 스택 오버플로는 대개 중지 조건이 충족되지 않음을 의미합니다. – raam86