Я работаю над своим назначением Lab для моего класса CS, Мне нужно заполнить метод, предоставленный мне инструктором, . Я добрался до точки, где я могу перейти к точке в массиве и отметьте направление перемещения, но оно работает только для некоторых позиций даже , хотя я вижу ясный путь.Поиск пути рекурсивно, переполнение?
, например, если я введу 8,2 Она находит путь просто отлично
Вот фото:
, но если я вхожу в точку 8,3, которая четко проходимый я получаю Переполнение и моя программа просто прыгает назад и вперед между строками 24 и 35
Если у кого-то есть идеи, где я ошибаюсь, я был бы признателен за некоторые советы! Спасибо Всем
public char[][] findPath(int startRow, int startCol, int destRow, int destCol, int threshold){
if((startRow==destRow)&&(startCol==destCol)){
JOptionPane.showMessageDialog(null, "A path has been found!");
map[destRow][destCol] = '^';
return map;
}
else if(startRow < 9 && checkIfPassable(startRow + 1, startCol, threshold)){
map[startRow][startCol]= 'S';
startRow++;
return findPath(startRow, startCol, destRow, destCol, threshold);
}
else if(startCol < 9 && checkIfPassable(startRow , startCol + 1, threshold)){
map[startRow][startCol]= 'E';
startCol++;
return findPath(startRow, startCol, destRow, destCol, threshold);
}
else if(startRow > 1 && checkIfPassable(startRow -1, startCol, threshold)){
map[startRow][startCol]= 'S';
startRow--;
return findPath(startRow, startCol, destRow, destCol, threshold);
}
else if(startCol > 1 && checkIfPassable(startRow , startCol -1, threshold)){
map[startRow][startCol]= 'E';
startCol--;
return findPath(startRow, startCol, destRow, destCol, threshold);
}
System.exit(1);
return map;
}
Настоятельно рекомендую вам научиться использовать отладчик. –