Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在数组中添加元素的递归函数_Java_Arrays_Recursion - Fatal编程技术网

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

Java 在数组中添加元素的递归函数,java,arrays,recursion,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); } privat

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

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作为答案。有人能详细说明一下上面的程序吗?我错在哪里。

你跳过了求和中数组的第一个元素。到达递归结束时返回数组[0]:

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

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

  }

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

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

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

  }

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

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;
}

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

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;
}

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

而不是:

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

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

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

而不是:

if (index==0){
    return 0;
}
尝试返回
array[index]
number
而不是0