У меня есть эта функция для решения лабиринта на C++, но когда я запускаю программу, я получаю ошибку «Бад-доступ» в рекурсии. Я думаю, что это может быть бесконечный цикл. Я понятия не имею, где и что происходит не так.Застрял в бесконечной рекурсии
bool Solve_Maze(int coorx,int coory) {
if((Map[coorx][coory]==Start)||(Map[coorx][coory]==path)) {
Map[coorx][coory]=wall;
Solve_Maze(coorx+1,coory);
Solve_Maze(coorx-1,coory);
Solve_Maze(coorx,coory+1);
Solve_Maze(coorx,coory-1);
}else if(Map[coorx][coory]==End) {
cout<<"You Solved the Maze!"<<endl;
delete Map;
return(true);
}
}
В зависимости от карты, но вы, вероятно, следует проверить, если coorx и coory являются действительными координатами/значения для карты –
Они, я показал координаты перед тем, если заявление и все работало, как ожидалось (первый набор COOR был Start и каждый другой coor был дорогой). –
Я не вижу, где вы отмечаете место, которое было отправлено. На первый взгляд кажется, что вы можете очень легко идти туда и обратно и никогда не кончать. (Я думаю, вы бы взорвали свой стек.) – Marvo