C++堆栈溢出

C++ Stack Overflow?

本文关键字:栈溢出 堆栈 C++      更新时间:2023-10-16

我写了一个递归函数(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)时,我能够修改我的代码以使算法正常工作。

感谢所有的帮助!