我有一个程序,我正在尝试创建一个类,用于添加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);请帮帮我一个人。我遇到了很多麻烦。谢谢。
答案 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;
}
}
}