簡體   English   中英

C ++堆棧溢出?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM