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