给定一个数组列表输入,我必须创建一个递归方法,该方法返回列表奇数位置中值的总和,并从中减去值的位置
例如:
private int method(ArrayList<Integer> list, int k)
{
int s = 0;
s = list.get(k);
if(k == list.size()) return s;
return s + method(k+1);
}
public int method(ArrayList<Integer> list)
{
return method(list,0);
}
(主要)
List<Integer> list = Arrays.asList(2, 5, 3, 7, 11, 1);
ArrayList<Integer> l2 = new ArrayList<>(list);
SumSub test = new SumSub(l2);
System.out.println(test.method(l2));
[2, 5, 3, 7, 11, 1] ---> 2-5+3-7+11-1=3(应该显示的结果) 但结果总是 22,我不明白为什么
最佳答案
一些提示:
- 为变量指定有意义的名称,而不是
k
、s
、list
等。 - 尽可能声明集合接口(interface) (List) 而不是实现类 (ArrayList),以提高代码中的抽象级别。
这里是递归解决方案的示例(未经测试):
private static int addOddAndSubtractEvenPositions(List<Integer> values, int position) {
// stop condition
if (position >= values.size()) {
return 0;
}
// recurse
int tailResult = addOddAndSubtractEvenPositions(values, position + 1);
// calculate
int currentValue = values.get(position);
if (position % 2 == 0) {
currentValue = -currentValue;
}
return currentValue + tailResult;
}
public static void main(String[] args) {
List<Integer> values = Arrays.asList(2, 5, 3, 7, 11, 1);
System.out.println(addOddAndSubtractEvenPositions(values, 0));
}
关于java - 如何通过使用 ArrayList 的递归方法获得加法和减法的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37160084/