【发布时间】:2018-01-03 05:48:55
【问题描述】:
我尝试编写从数组中返回最大值 - 最小值的递归程序。
所以我写了这个:(这给我最大的价值)
public static void main(String[] args) {
int arr[] = {1 , 5 , 11, -2};
System.out.println(SumOfBiggestMinusLowestValue(arr, 0));
}
private static int SumOfBiggestMinusLowestValue(int[] arr, int index) {
if (index == arr.length-1 ) {
return arr[index];
}
return Math.max (arr[index] ,SumOfBiggestMinusLowestValue(arr, index+1));
}
我虽然这样做是为了返回 big-min:
return Math.max (arr[index] ,SumOfBiggestMinusLowestValue(arr, index+1)) - Math.min(arr[index] ,SumOfBiggestMinusLowestValue(arr, index+1))
但它给我 7 而不是 13 是行不通的,我错过了什么? 从你的经验来看,如何递归思考?
【问题讨论】:
-
正确答案不应该是 13 吗? (11 - (-2))
-
哎呀,是的。对不起,我醒了很多时间没有睡觉。
-
此代码不会为我返回 7;它返回 11(最大值)——基本上是因为除了找到
Math.max之外,你在这里什么都做不了。也许你需要再做一次类似的事情,这次是找到最小的数字,然后减去两个结果。