[英]Calculating sum 1 to N by adding 1 to N/2 with N/2 to N in a recursive method
[英]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.