在此示例中,我尝试使用递归来对列表的所有元素求和。但是 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/