我正在尝试编写一个递归程序,它将数组列表的总和相加 . 它需要使用辅助函数,如下所示 .
我没有看到我做错了什么,但我认为这与未能让程序在添加后从列表中删除项目有关 . 谁能帮助我?
编辑:让我用伪代码解释我的逻辑:我想让程序识别数组列表中的项目并将其存储为double sum . 然后通过递归传递,我想通过移动数组列表中的项目并将它们添加到double sum来继续重复此过程 .
public static double sum (double[] a) {
double sum = 0;
return sumHelper (a, a.length-1, sum); // TODO
}
public static double sumHelper (double[] a, int i, double sum)
{
if (a.length == 0) {
return sumHelper (a, a-1, sum);
}
else {
sum = sum + a[i];
i = i-1;
a.length -1; // THIS LINE DOESN'T WORK
return sumHelper (a, a-1, sum);
}
return sum;
}
public static void main (String[] args) {
double[] list0 = new double[] {};
double[] list1 = new double[] { 5 };
double[] list2 = new double[] { -3, 5 };
double[] list3 = new double[] { 2, -3, 5 };
double[] list4 = new double[] { -1, 2, -3, 5 };
double[] list5 = new double[] { 33, 44, 55 };
System.out.println("Display the sum of the array contents");
System.out.println ("list5: " +sum (list5));
System.out.println ("list0: " +sum (list0));
System.out.println ("list1: " +sum (list1));
System.out.println ("list2: " +sum (list2));
System.out.println ("list3: " +sum (list3));
System.out.println ("list4: " +sum (list4));
2 回答
这是你想要做的吗?
结果:
你错放了变量,a-1而不是i . 并且数组将从0索引开始,因此您需要将元素添加到0索引 .