繁体   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