日期:2014-05-20  浏览次数:20744 次

求助求助,递归问题
函数sum(int a [],int n)的返回值是数组a[]的前几个元素之和?请使用递归的非递归两种方式实现。

------解决方案--------------------
递归:
int sum(int[] a, int n){
if (a.length==1) return a[0];
else return sum( a, n-1) + a[n-1];
}

非递归:
int sum(int[] a, int n){
int sum=0;
for (int i=0; i<n; i++) sum+=a[i];
return sum;
}
------解决方案--------------------

非递归 n为下标从0开始包含n
public static int sum(int a[],int n){
 int result = 0;
 for(i=0;i<=n;i++){
result+=a[i];
 }
 return result;
}
递归 n为下标从0开始包含n
public static int sum(int a[],int n){
 if(n==0) return a[0];
 return sum(a[],n-1)+a[n];
}