. *** * |
***** * *** *** |
* * |
* * * ** **O** |
* * * * |
********** *** |
* * **|
** * ** * |
你好傢伙,我剛開始學習遞歸,我有點困惑,我的意思是,我有這個8x16迷宮(忽略右側的酒吧)的起始位置迷宮是0,0,你可以在迷宮裏出來,我從那裏得到在C++中的遞歸的方式,「O」點,到目前爲止,我已經嘗試過這種瞭解遞歸C++
bool Laberinto::findPath(int x,int y){
//outside limits bounds
if(x < 0 || x > nRows || y < 0 || y > nCol)
return false;
//if goal
if(x == goalRow && y == goalCol){
updateLab();
return true;
}
//if obstacle
if(matrix[x][y] == '*' || matrix[x][y] == 'X'){
return false;
}
matrix[x][y] = '.';
updateLab();
//North checking
if(findPath(x-1,y) == true){
return true;
}
//East checking
if(findPath(x,y+1) == true){
return true;
}
//South checking
if(findPath(x+1,y) == true){
return true;
}
//West checking
if(findPath(x,y-1) == true){
return true;
}
matrix[x][y] = 'X';
updateLab();
return false;
}
updateLab()只打印迷宮,東西是它到了東邊直到它找到了一個障礙,然後一直往南走,直到它崩潰,但是因爲我剛剛開始學習遞歸,所以我沒有看到我的錯誤發生在哪裏
........*** * |
***** *.*** *** |
* * |
* * * ** **O** |
* * * * |
********** *** |
* * **|
** * ** * |
'goalCol'和'goalRow'從哪裏來? – Michael
通過在調試器中運行以捕獲實際崩潰並瞭解代碼發生的位置。 –
你的問題不是遞歸,這是相當微不足道的,我建議你的關注你把注意力集中在錯誤的事情上。只需調試你的代碼。由於遞歸,你很可能會崩潰。 – CarlH