我使用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