私はJavaを使用しています。配列内の2つの値の差異への再帰関数
私は2つの値の差を計算し、サイズ2の配列を返す再帰関数を実装する必要があります[MAXIMUM_DIFF, STARTINDEX]
。以下のアレイについて
:最大差が70 (60-(-10)=70)
であり、60のインデックスIから90%を有する2
あるため[70,2]
:
arr = {1, 4, 60, -10, 2, 7, 56, -10}
再帰的な方法は、サイズ2の配列を返します解決策:
public static int[] getMax(int[] arr) {
int [] retArr = new int[2];
if(arr.length == 1)
return retArr;
else {
return getMax(arr, retArr);
}
}
public static int[] getMax(int[] arr, int[] retArr) {
if(retArr[1] == arr.length - 1)
return retArr;
int currentMaxVal = arr[retArr[1]] - arr[retArr[1] + 1];
if(currentMaxVal > retArr[0]) {
retArr[0] = currentMaxVal;
}
retArr[1] = retArr[1] + 1;
return getMax(arr, retArr);
}
しかし、結果は、Th1ため[70,7]
の代わり[70,2]
ですs行retArr[1] = retArr[1] + 1;
これは、インデックスを保存する場所がわからないためです。インデックスを保存するにはどうすればよいですか。
*私は多分
私はgetMax(int [] arr, int []retArr)
の第二のparamを変更するには多分、別のパラメータを追加カント、そして、私は静的変数を使用することはできません異なる可能性がgetMax(int [] arr, int []retArr)
その第二のparamについてはよく分かりません
なぜあなたはindexという別のパラメータを渡して、比較if文の中に入ったときにのみ更新しないのですか? – zenwraight