我使用Java兩個值之間的差異。遞歸函數在陣列
我需要實現計算用於我陣列大小爲2 [MAXIMUM_DIFF, STARTINDEX]
各兩個值,並返回之間的差的遞歸函數。
對於以下的數組:
arr = {1, 4, 60, -10, 2, 7, 56, -10}
遞歸方法返回陣列中的大小爲2:[70,2]
因爲最大差爲70 (60-(-10)=70)
和60的索引是2
我有90%來自解決方案:
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);
}
但結果是[70,7]
而不是[70,2]
因爲THI s的線路retArr[1] = retArr[1] + 1;
這是因爲我不知道在哪裏保存索引,所以,我怎麼可以保存索引?
*我不知道getMax(int [] arr, int []retArr)
它的第二PARAM可以是不同的,也許
我不能添加其他參數,也許改變的getMax(int [] arr, int []retArr)
第二PARAM,我不能用靜態變量
你爲什麼不通過其他參數調用指標,只有當它裏面的if語句 – zenwraight