我創建了一個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
遞歸應該縮小你的代碼 - 以更多的內存使用爲代價使它更小更簡單。你的巨大代碼沒有意義。 –
我不知道該怎麼做。我認爲這可能是遞歸地解決的 –