簡體   English   中英

在A [0…n-2]上重復,將結果加到A [n-1],然后返回總和

[英]Recur on A[0 … n - 2] , add the result to A[n - 1] , then return the sum

編寫一個名為sumArray()的遞歸函數,該函數確定數組A [0 ... n-1]中的整數之和。 在A [0 ... n-2]上重復,將結果加到A [n-1],然后返回總和。

碼:

    static int sum1(int[] A, int p, int r) {
        int r2= r-1;
        if (p==r)
            return p;
        else if(p==r2) 
           return A[r2]+A[p];
        else
           p=sum1(A,p+1,r2)+p;
        return p+A[r];
   }

我正在輸入的數組A是int [] A = {1,2,3,4,5,6,7,8,9,10}的值是50,而不是55。我怎么了?碼?

可以使用更簡潔的方式編寫相同的邏輯,如下所示:

static int sum1(int[] A, int p) {
    if (p < 0) return 0;
    A[p] += sum1(A, p - 1) ;
    return A[p];
}

並且用p來調用它總是等於size(A)-1

public static void main(String [] args)
{
    int[] A  = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    System.out.println( sum2(A, 9));  
}
  • 請注意,您可以計算A的遞歸和,而無需如下進行修改(與以前相同的邏輯,而無需更新A

這是代碼:

static int sum1(int[] A, int p) {
    if (p < 0) return 0;
    return A[p]+sum1(A, p - 1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM