【发布时间】:2014-10-23 05:15:28
【问题描述】:
public long weightedSum(int[] a, int[] b, int n) {
long value = 0;
long sum = 0;
for (int i = 0; i < a.length; i++) {
value = a[i] * b[i];
sum = sum + value;
}
return sum;
}
以两个一维整数数组和一个整数 n 作为参数,并返回两个数组的前 n 个元素的乘积之和。例如,给定以下两个一维数组:
int[] arr1 = {1, 2, 3, 4, 5};
int[] arr2 = {6, 7, 8, 9, 10};
arr1和arr2的前4个元素,即1 * 6 + 2 * 7 + 3 * 8 + 4 * 9 = 80作为结果。
【问题讨论】:
-
到目前为止你尝试过什么?
-
你为什么要这样做?
-
计算第 n 对
value并与 n-1 递归的结果相加。如果 n==0,则返回 0。 (@ScaryWombat - 因为这是一项任务?) -
因为我想了解循环和递归之间的区别可怕的袋熊我想知道我应该在该代码中更改什么,是的,这是一个作业
-
这不是递归的好选择,因为算法是 N 阶的(对于大型数组,您的堆栈将溢出)。尝试处理阶乘。 (仍然是 N 阶,但考虑到 20!是您可以使用 64 位类型评估的最大数字,这限制了事情)。或者,更好的是,旋转排序算法或在有序列表上搜索。 (订购 log(N) 所以你的堆栈会很好)。如果这是一项作业,请向您的教授指出!