java - 如何使用remove()方法递归地传递列表?

标签 java recursion

在此示例中,我尝试使用递归来对列表的所有元素求和。但是 summation(l.remove(0)) 有问题,它必须返回列表的尾部,但不能应用于此处。怎样做才正确呢?

public static Integer summation(List<Integer> list) {
    return (list.isEmpty())
            ? 0
            : list.get(list.size() - 1) + summation(list.remove(0));
}

最佳答案

这可以工作,但列表最后将为空(如果您想保留原始列表,请使用创建的列表副本(例如使用 summation )对 new ArrayList<Integer>(originalList) 进行初始调用)

public static Integer summation(List<Integer> list) {
    if (list.isEmpty()) {
        return 0;
    }
    return list.remove(list.size() - 1) + summation(list);
}

关于java - 如何使用remove()方法递归地传递列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148874/

相关文章:

java - NoSuchAlgorithmException : MessageDigest SHA implementation not found while ObjectInputStream. readObject() Android

java - 使用带 REF_CURSOR 的存储过程的 Spring 存储库

jquery - 连续 Ajax 调用,直到满足预期响应

c - 使用递归查找数组的最小和最大元素的程序

Java - 递归方法,获取一个数组中的累积和并返回另一个数组

java - 按钮不起作用,没有给出错误

java - 实现滑动窗口(java)

java - 如何在 libgdx 中正确实现声音切换?

java - 使用此问题中提供的数据递归创建 TreeView?

recursion - F# 中具有内存功能的递归阶乘函数