首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用递归求和ArrayList<Integers>?

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

Stack Overflow用户
提问于 2015-11-23 12:28:34
回答 1查看 3.9K关注 0票数 4

我希望我的方法用递归来和一个整数列表并返回这个列表。

以下是我的尝试:

代码语言:javascript
复制
    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()));
        }
    }

我的主要方法是:

代码语言:javascript
复制
        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

那怎么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 12:32:46

我已经以注释的形式在代码中提供了解释。在递归函数完成后,他必须打印主和。将print语句放入递归函数将导致每次在控制台中打印值。

见下文的更正:

代码语言:javascript
复制
 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()));
        }
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33871126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档