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

解决方案 »

  1.   

    递归:
    public long sum(int[] a, int n) {
      return (n==0) ? (a[0]) : (a[n]+sum(a,n-1));
    }
      

  2.   

    递归:
    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;
    }
      

  3.   


    非递归 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];
    }