재미있는 Java 구현 자바를 만들고 있는데, 그 중 하나를 클릭하면 모두 0으로 채워 넣으려고합니다. 호출이 제대로 작동하지 않을재귀 지뢰 찾기 "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
재귀는 코드를 축소해야합니다. 메모리 사용량을 줄이면서 더 작고 단순하게 만듭니다. 귀하의 거대한 코드는 이해가되지 않습니다. –
나는 그것을 어떻게하는지 모른다. 재귀 적으로 해결할 수있을 거라고 생각했습니다. –