首页 文章

协助编写一个递归函数,该函数汇总了Java中的数组列表

提问于
浏览
0

我正在尝试编写一个递归程序,它将数组列表的总和相加 . 它需要使用辅助函数,如下所示 .

我没有看到我做错了什么,但我认为这与未能让程序在添加后从列表中删除项目有关 . 谁能帮助我?

编辑:让我用伪代码解释我的逻辑:我想让程序识别数组列表中的项目并将其存储为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 回答

  • 0

    这是你想要做的吗?

    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 (i < 0) { 
            return sum;
        }
        else {
            sum = sum + a[i];
            i = i-1;
            return sumHelper (a, i, 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));
    
    }
    

    结果:

    显示数组内容列表的总和5:132.0 list0:0.0 list1:5.0 list2:2.0 list3:4.0 list4:3.0

  • 1

    你错放了变量,a-1而不是i . 并且数组将从0索引开始,因此您需要将元素添加到0索引 .

    static double[] list0 = new double[] {};
            static double[] list1 = new double[] { 5 };
            static double[] list2 = new double[] { -3, 5 };
            static double[] list3 = new double[] { 2, -3, 5 };
            static double[] list4 = new double[] { -1, 2, -3, 5 };
            static double[] list5 = new double[] { 33, 44, 55 };
            public static void main(String[] args) {
                // TOsuDO Auto-generated method stub
                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));
            }
            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 (i == -1) {
                    {
                        System.out.println("Added all the elements");
                        return sum;
                    }
                }
                else {
                    sum = sum + a[i];
                    i = i-1;
                    //a.length -1; // THIS LINE DOESN'T WORK
                    return sumHelper (a, i, sum);
                }
            }
    

相关问题