在实现扫雷小游戏的过程中打算通过递归实现一个函数,其功能是让数字'0'附近的八个数字显示出来,且如果这八个数字其中有’0‘则会重复函数的功能。
void Expcount(char inner[ROWS][COLS], char show[ROWS][COLS], int row, int col, int x, int y)
{
for (int i = -1; i < 1; i++)
{
for (int j = -1; j < 1; j++)
{
show[x + i][y + j] = inner[x + i][y + j];//显示0附近八个格子里面数字
if (inner[x + i][y + j] == '0' && show[x + i][y + j] != '0')//递归的时候忽略了本身也是字符'0'导致无限递归
{
Expcount(inner, show, row, col, x + i, y + j);//递归实现空格传递开视野
}
}
}
}
修改之前没有考虑’0‘本身任然会出现在下一个’0‘的八个数字内导致无限递归,加入限制条件后解决