递归求和的数组

时间:2016-03-07 05:42:01

标签: java recursion

我有一个程序,我正在尝试创建一个类,用于添加2到100的数组整数,增量为2并使用递归。答案应该是2到100的总和,增量为2(2 + 4 + 6 + .... + 100);

这是我的程序到目前为止:

public class ArraysInDepth {
public static void main(String[]args){
int size, sum;      
int[] array = new int [101];

sum = sum(array,2);   
System.out.println("The sum of the numbers are " +sum);
}     
public static int sum(int[] arr,int index){


int sumOfNumbers=0;    
arr[index] = index;
sumOfNumbers = sumOfNumbers + arr[index];


enter code here


if(index<arr.length)
{     
sumOfNumbers = sum(arr,index); 


index += 2;   
return sumOfNumbers; 

}

else{
return 0; 
}

}


}

但我每次都会收到错误。我无法运行它。答案应该是2到100的总和,增量为2(2 + 4 + 6 + .... + 100);请帮帮我一个人。我遇到了很多麻烦。谢谢。

2 个答案:

答案 0 :(得分:0)

现在的样子,你在每个深度都返回一个值arr[index],而不是总结任何东西。您的算法应如下所示:

public int sum(int[] arr, int index) {
    if(/*index is still valid*/) {
        return arr[index] + sum(arr, index+2);
    } else {
        return 0;
    }
}

答案 1 :(得分:0)

您的递归不会停止。在递归调用sum之前,必须增加索引。 使用递归最重要的是注意终止点。

    public class ArraysInDepth {
       public static void main(String[] args){
            int size, sum;      
            int[] array = new int [101];
            sum = sum(array,2);   
            System.out.println("The sum of the numbers are " +sum);
       }     

       public static int sum(int[] arr,int index){   
            if(index<arr.length){        
                 arr[index] = index;
                 int sumOfNumbers = arr[index];
                 index += 2;
                 sumOfNumbers += sum(arr,index); 
                 return sumOfNumbers; 
            }
            else{
                 return 0; 
            }
      }
    }