わかりました、私は再帰を使用する必要があるこの関数を持っています。これは、ユーザーによって座標(i、j)、ゼロが指定された mineswepper(int[][] m) を検索します。ゼロは、その地域の近くに地雷がないことを意味します。それがゼロの場合、私の関数はこのゼロと、この最初のゼロの周りのゼロを 1 つの位置の範囲で表示する必要があります。これは、見つかったすべてのゼロに対して再帰的に行う必要があります。
私の int[][]v は私のビジョン マトリックスです。以前は、すべての場所についてステータス (1 => 場所を表示できます。0 => ?) を個別に表示していたので、すべてのマトリックス m を印刷すると、行列 v に 1 がある場所のみを確認できます。
1-. ゼロを見つけた2
2-. 見つけられるゼロがなくなるまで、他のゼロを見つけるために周りを検索します
? ? ? ?
? ? ? ?
? ? 0 ?
? ? ? ?
? ? ? ?
視覚行列 v でどのように見えるか
0 0 0 0
0 0 0 0
0 0 1 0
0 0 0 0
0 0 0 0
? ? ? ?
? ? ? ?
? ? 0 ?
? ? ? 0
? ? ? ?
視覚行列 v でどのように見えるか
0 0 0 0
0 0 0 0
0 0 1 0
0 0 0 1
0 0 0 0
public void zeros(int[][]m, int[][]v, int j, int i){
v[i][j] = 1;
for(int a = Math.max(0, i-1); a < Math.min(5,i+2); a++){
for(int b = Math.max(0,j-1); b < Math.min(5,j+2); b++){
if(m[a][b] == 0){
i = a;
j = b;
zeros( m, v, i, j);}
}
}
}
fors は、指定された i と j の周りのすべての場所を検索します。
エラーが表示されます。スレッド「メイン」の例外 java.lang.StackOverflowError. なぜだかわかりません。多分誰かが再帰性を作るのに早い方法を与えるか、私の間違いを教えてくれるでしょう。