C ++ Stack Overflow?

时间:2013-12-30 21:16:07

标签: c++ recursion 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

1 个答案:

答案 0 :(得分:0)

道歉,感谢您的回复。

经过多次调试后,我找到了问题的答案,这与堆栈溢出无关。

这是因为我假设C ++运算符%的工作方式类似于模运算的数学版本,只输出0,1,...,n-1(mod n)。

当我意识到情况并非如此(-1%4是-1而不是3)时,我能够修改我的代码以使算法正常工作。

感谢您的帮助!