我一直在练习递归,而我正在尝试的练习之一是通过将数组分成两半,然后下到单个元素并将其值加到累加器上来获得数组的和回到。我的代码是:
"appid": "xxxxxx"
但是,当数组的大小大于2时,我得到"app_displayname": "joywebapp2"
异常,并且我知道`copyofRange(int startInc,int endExc)是[a,b)。我已经玩了很多。为什么这不起作用?既具有仅偶数因子的数组大小,又具有没有偶数的数组大小?
答案 0 :(得分:1)
关于递归,我的建议是保持简单并让递归完成工作。这是一个完美的例子。您已经使解决方案变得过于复杂,并且正在追寻根本不应该发生的错误。考虑:
public static int arrayValuesSum(int[] array) {
return arrayValuesSumRecursive(array, 0, array.length);
}
public static int arrayValuesSumRecursive(int[] array, int start, int length) {
if (length == 0)
return 0;
if (length == 1)
return array[start];
int half = length / 2;
return arrayValuesSumRecursive(array, start, half) + arrayValuesSumRecursive(array, start + half, length - half);
}
无需浪费时间和空间来复制和重新复制阵列。