java - 如何通过使用 ArrayList 的递归方法获得加法和减法的结果?

标签 java list recursion arraylist indexing

给定一个数组列表输入,我必须创建一个递归方法,该方法返回列表奇数位置中值的总和,并从中减去值的位置

例如:

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,我不明白为什么

最佳答案

一些提示:

  • 为变量指定有意义的名称,而不是 kslist 等。
  • 尽可能声明集合接口(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/

相关文章:

java - 如何使用 SVG Salamander 旋转元素

python - 如何使用 python 将包含以逗号分隔的值的列表插入到 MySQL 数据库中

c++ - 对递归数独回溯函数的模糊调用。

java - 为什么这个归并排序不起作用?

javascript - 递归遍历一个json对象 Results in "uncaught syntaxError: Illegal return statement"

java - N 秒内对 M 个请求的限制方法调用

java - JSpinner : Increase length of editor box

java - 递归填充溢出

python - Python 比较两个字符串列表

javascript - 将 python 条件翻译为 javascript -- 控制流