用于在数组中添加元素的递归函数

时间:2015-03-31 13:39:42

标签: java arrays recursion

我编写了一个递归函数来总结数组中的元素。我对以下程序的行为方式感到困惑和困惑。

public class Recursion{

private static int array[] = new int[]{4,6,7,2,3};

public static void main(String argv[]){

    int result = sum(0 , 5);
    System.out.println("The result is "+result);
  }

  private static int sum(int number, int index){

    if (index==0){
        return 0;
    }
    return number + sum(array[index-1], index-1) ;

  }
}

上述程序返回18作为答案。有人可以详细说明上述程序,因为我出错了。

3 个答案:

答案 0 :(得分:2)

如上所述,调用树扩展为:

sum(0, 5)
0 + sum(3, 4)
0 + 3 + sum(2, 3)
0 + 3 + 2 + sum(7, 2) 
0 + 3 + 2 + 7 + sum(6, 1)
0 + 3 + 2 + 7 + 6 + sum(4, 0)
0 + 3 + 2 + 7 + 6 + 0

sum(4, 0)符合条件index==0,因此返回0.它应返回number,即4。

if (index==0){
    return number;
}

答案 1 :(得分:1)

您正在跳过总和中数组的第一个元素。到达递归结束时返回array[0]

  private static int sum(int number, int index){

    if (index==0){
        return array[0];
    }
    return number + sum(array[index-1], index-1) ;

  }

答案 2 :(得分:1)

您没有添加数组中第一个位置的值。

而不是:

if (index==0){
    return 0;
}

尝试返回array[index]number而不是0。