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