我正在为学校项目的扫雷器工作。如果相邻方块中的地雷数为0,我目前正在开发相邻方块。我已经编写了一个函数来这样做。
{
void Square::openAdjacent(int a, int b)
{
for (int i=(a-1); i<=(a+1); i++)
{
for (int j= (b-1); j<=(b+1); j++)
{
if ((i==a && j==b) || (i<=0) || (j<=0) || (i>=board_->size()) || (j>=board_->size())){}
else if (not board_->at(j).at(i).opened_ && count_==0 && (opened_) && (not board_->at(j).at(i).hasMine_)){
board_->at(j).at(i).opened_=true;
if (board_->at(j).at(i).count_==0){
openAdjacent(i, j);
}
}
}
}
}
}
如您所见,我在同一函数中调用了openAdjacent函数。我已经阅读并了解到这在C ++中是不可能的。我想知道是否有可能解决此问题,以及我应该如何解决。
答案 0 :(得分:0)
我已经阅读并了解到这在C ++中是不可能的。我会 想知道是否有可能解决该问题以及如何解决 应该这样做。
否,因为该问题不存在,所以无法解决该问题。您可以在同一函数中调用一个函数。甚至间接从函数中调用它。这里实际上没有任何限制。您只需要注意结束无限递归即可。