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

标签 java list recursion arraylist sum

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

这是我的尝试:

    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 中打印总和。将打印语句放在递归函数中会导致每次在控制台中打印一个值。

请参阅下面的更正:

 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()));
        }
    }

关于java - 如何使用递归对 ArrayList<Integers> 求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33871126/

相关文章:

java - 如何识别 HTML 标签并替换其间的字符?

python - 元组到 DataFrame 转换的列表

c - C语言递归声明函数

java - 如何在openfire中获取 "both"订阅类型

java - 如何在 onDraw 方法 Android 之外访问 Canvas 宽度

r - 从列表创建数据框

perl - 如何在Perl中同时遍历多个列表?

c# - 使用 Async/Await 的无限递归调用永远不会抛出异常

php - 生成面包屑的递归函数

java - 使用 Calendar 或 DateTime 设置日期