我编写了一个递归函数(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
答案 0 :(得分:0)
道歉,感谢您的回复。
经过多次调试后,我找到了问题的答案,这与堆栈溢出无关。
这是因为我假设C ++运算符%的工作方式类似于模运算的数学版本,只输出0,1,...,n-1(mod n)。
当我意识到情况并非如此(-1%4是-1而不是3)时,我能够修改我的代码以使算法正常工作。
感谢您的帮助!