繁体   English   中英

如何对ArrayList求和 <Integers> 使用递归?

[英]How to sum an ArrayList<Integers> using recursion?

我希望我的方法使用递归对整数列表求和并返回该列表。

这是我的尝试:

    public static int sumListRecursive(List<Integer> numbers) {
        if (numbers.isEmpty() == true ) {
            return 0;
        }
        else {
            System.out.println(numbers.get(0) + sumListRecursive(numbers.subList(1, numbers.size())));
            return numbers.get(0) + sumListRecursive(numbers.subList(1, numbers.size()));
        }
    }

在我的主要方法中,我有这个:

        List<Integer> numbers = new ArrayList<Integer>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        sumListRecursive(numbers);

当我运行程序时,我在控制台中得到这个:10 4 7 4 9 4 7 4

那有什么不对?

我以评论的形式在代码中提供了解释。 在递归函数完成后,他必须在main中打印总和。 将print语句放在递归函数中会导致每次都在控制台中打印一个值。

请参阅以下更正:

 public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<Integer>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        //print the sum in here 
        System.out.println(sumListRecursive(numbers));


    }

    public static int sumListRecursive(List<Integer> numbers) {
        if (numbers.isEmpty() == true ) {
            return 0;
        }
        else {
            /* removed the print statement from here as it prints each time the function is called and else is executed. */
            return numbers.get(0) + sumListRecursive(numbers.subList(1, numbers.size()));
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM