【发布时间】:2014-10-25 07:00:53
【问题描述】:
这是我的代码。我已经阅读了如何使用递归算法来解决迷宫问题,这应该可以工作,但是我一直遇到分段错误,我不知道为什么。如果你能帮助我,那就太好了。谢谢。
bool FindPath(Maze& m, int x, int y){
RoomType rt = m.GetRoomType(x,y);
if (rt == RoomType::Outside)
return false;
if (rt == RoomType::Treasure){
return true;
}
if (rt == RoomType::Wall)
return false;
m.MarkPath(x,y);
if (FindPath(m,x,y-1) == true){
return true;
}
if (FindPath(m,x+1,y) == true){
return true;
}
if (FindPath(m,x,y+1) == true){
return true;
}
if (FindPath(m,x-1,y) == true){
return true;
}
m.ClearPath(x,y);
return false;
}
【问题讨论】:
-
将其标记为 C++。由于故障不在此代码中。为什么不试试调试器
-
你似乎没有避免踩到标记的路径,这会导致无限递归
-
“[T]这应该可以。”成功调试的第一步是从你的脑海中抹去这个想法。它不起作用是有原因的——你只需要找到。
标签: c++ c++11 segmentation-fault maze