我创建了一个Java实现的Java乐趣,我试图在你点击一个池时填入所有的零。 (玩扫雷,看看我说的)递归扫雷“0填充”
这里是我的递归调用:
private void revealZeros(int x, int y) {
if (board[y][x].revealed)
return;
board[y][x].revealed = true;
if (y > 0) {
if (x > 0)
if (!board[y - 1][x - 1].revealed && board[y - 1][x - 1].b == 0)
revealZeros(y - 1, x - 1);
if (x < 15) {
if (!board[y - 1][x + 1].revealed && board[y - 1][x + 1].b == 0)
revealZeros(y - 1, x + 1);
}
if (!board[y - 1][x].revealed && board[y - 1][x].b == 0)
revealZeros(y - 1, x);
}
if (x > 0)
if (!board[y][x - 1].revealed && board[y][x - 1].b == 0)
revealZeros(y, x - 1);
if (x < 15)
if (!board[y][x + 1].revealed && board[y][x + 1].b == 0)
revealZeros(y, x + 1);
if (y < 15) {
if (x > 0)
if (!board[y + 1][x - 1].revealed && board[y + 1][x - 1].b == 0)
revealZeros(y + 1, x - 1);
if (x < 15)
if (!board[y + 1][x + 1].revealed && board[y + 1][x + 1].b == 0)
revealZeros(y + 1, x + 1);
if (!board[y + 1][x].revealed && board[y + 1][x].b == 0)
revealZeros(y + 1, x);
}
}
通话不能正常工作。它显示除0之外的块,并且不显示全部0块。
Space.b =它周围的炸弹数量
Space.revealed =是否显示空间?
迭代解决方案是不是更容易实现? – Tyler
递归应该缩小你的代码 - 以更多的内存使用为代价使它更小更简单。你的巨大代码没有意义。 –
我不知道该怎么做。我认为这可能是递归地解决的 –