我的代码的以下部分出现运行时错误。
int sacrificeCounter(int board[][5], int row, int col, int count)
{
if ((row >= 0) && (row < 5) && (col >= 0) && (col < 5))
{
if (row > 0)
if (containsElement(&topSacrifice[0], board[row][col], 3))
if (containsElement(¬ToChoose[0], board[row - 1][col], 6))
{
count = sacrificeCounter(board, row - 1, col, count + 1);
}
if (row < 4)
if (containsElement(&bottomSacrifice[0], board[row][col], 3))
if (containsElement(¬ToChoose[0], board[row + 1][col], 6))
{
count = sacrificeCounter(board, row + 1, col, count + 1);
}
if (col > 0)
if (containsElement(&leftSacrifice[0], board[row][col], 3))
if (containsElement(¬ToChoose[0], board[row][col - 1], 6))
{
count = sacrificeCounter(board, row, col - 1, count + 1);
}
if (col < 4)
if (containsElement(&rightSacrifice[0], board[row][col], 3))
if (containsElement(¬ToChoose[0], board[row][col + 1], 6))
{
count = sacrificeCounter(board, row, col + 1, count + 1);
}
}
return count;
}
Dev cpp编译窗口冻结并关闭。有时,它会在关闭编译窗口之前显示 SIGSEGV错误。我搜索了SIGSEGV并发现它主要是在数组边界超出时引起的。但我不知道它超出了哪里。我添加了一个额外的if条件(连续三个中的第一个)以确保数组索引保持在其边界内。但没有帮助。
当我评论count=sacrifice...
(所有四行)时,没有错误。但是,当然,我没有得到所需的输出。这里board
是5x5矩阵。在调用函数时,row
和col
值都介于0-4和count
之间,值为1。
注意: - 我在整个代码中只调用此函数一次。但是,它是一个多次调用自身的递归函数。