我希望我的方法用递归来和一个整数列表并返回这个列表。
以下是我的尝试:
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
那怎么了?
发布于 2015-11-23 12:32:46
我已经以注释的形式在代码中提供了解释。在递归函数完成后,他必须打印主和。将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()));
}
}https://stackoverflow.com/questions/33871126
复制相似问题