グリッド(2D配列)を完成させる方法がいくつあるかを調べるメソッドを記述する必要があります。再帰呼び出しでのカウント
グリッド内の動きは次のようである:[0] [0]この例のために
[array.[0][0]%10][array.[0][0]/10]
又は[array.[0][0]/10][array.[0][0]%10]
のいずれかに移動し、次いで(例えば14など)が内部に番号を取ると開始 : [1][4]
または[4][1]
アレイの最後(右下)に到達するまで。
私は配列の終わりまで到達することができます(すべての可能な方法) - 私の問題は、実際に何度も配列を終えた回数を数えることです - メソッドの外で変数を使うことはできません。再帰的。
これはコードです:
private static int howMany(int[][] array, int y, int x, int count) {
if(y+(array[y][x]%10) < array.length && x+(array[y][x]/10)< array[y].length && array[y][x]!=0) {
System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
howMany(array, y+(array[y][x]%10), x+(array[y][x]/10),count);
}
if(y+(array[y][x]/10) < array.length && x+(array[y][x]%10)< array[y].length && array[y][x]!=0) {
System.out.println("["+y+"]["+x+"] is: "+array[y][x]);
howMany(array, y+(array[y][x]/10), x+(array[y][x]%10),count);
}
if(y==array.length-1 && x==array[y].length-1) count++;
return count;
}
これは明らかに間違っていると、最初の場所にあったものを、カウントが返されます、私は他の多くの方法を試みたが、無駄に... ここに完全なクラスが(とですテストするための配列):
編集:彼らの助けのためのみんなに大きな感謝!
ありがとうございました。私はこれを使用しました(主に変更が少なくて済むため) –