[英]C++ Stack Overflow?
我編寫了一個遞歸函數(nextMove),旨在通過Win 32控制台中的12x12矩陣表示的迷宮找到方法。 不幸的是,當我嘗試使用Visual Studio運行它時,控制台會話在經過幾十次迭代后異常終止,並且在沒有提供任何信息的情況下消失了。
這是堆棧溢出嗎?
可能是因為我正在讀取一個矩陣,定義了一些變量並在nextMove中調用了其他函數,所以這對於堆棧來說太多了,並且弄亂了它……但是我不確定。
遞歸函數如下:(預先道歉,因為我是編程新手,所以它不會贏得任何美容/優雅競賽)
void nextMove(char A[size][size], int lRow, int lCol, int cRow, int cCol)
{
A[lRow][lCol] = '.';
A[cRow][cCol] = 'X';
printMatrix(A);
if (isBorder(cRow, cCol)) { return; }
else {
int r, c; // temporary row and col
int lastMove = move(cRow - lRow, cCol - lCol);
for (int i = -1; i <= 2; i++) {
r = cRow + row((lastMove + i) % 4);
c = cCol + col((lastMove + i) % 4);
if (allowableMove(A, r, c)) {
nextMove(A, cRow, cCol, r, c);
break;
}
} // end for
} // end else
} // end nextMove
抱歉,謝謝您的回復。
經過更多調試之后,我找到了問題的答案,並且與堆棧溢出無關。
這是因為我假設C ++運算符%的工作方式類似於模塊化算術的數學版本,僅輸出0,1,...,n-1(mod n)。
當我意識到不是這種情況時(-1%4是-1,而不是3),我能夠修改代碼以使算法正確運行。
感謝您的所有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.