2016-05-31 87 views
3

假設我有2個數據是這樣的:如何總結像鋸齒形算法

x = 1, and {10,20,30}. 

我要總結是這樣的:

1 + 10 = 11, 11 + 20 = 31, and 31 + 30 = 61 

我的代碼。

int x = 1; 
int[] arr = {10, 20, 30}; 
int sum = 0; 
for (int i = 0; i < arr.length; i++) 
{ 
    sum = arr[i] + x; 
} 

我得到這個:

1 + 10 = 11, 1 + 20 = 21, and 1 + 30 = 31 and so on 

如何解決這個問題呢?

+0

,讓你扔掉以前的迭代的結果。 'sum = 1;循環(sum + = arr [i])'基本上就是你所需要的。 –

+1

只是想知道:難道你是絕對過分複雜的事情?爲什麼把「曲折複雜性」放到1 + 10 + 20 + 30的東西上? – GhostCat

回答

4

初始化sumx,在arr[i]值增加sum和鴕鳥政策設置sumarr[i] + x

int sum = x; // You only want to add x once, so just say the sum is equal to x 
for (int i = 0; i < arr.length; i++) 
{ 
    // You didn´t sum the values up, you just said the sum is equal to your 
    // x value plus the element at arr[i] 
    sum += arr[i]; 
} 
+0

謝謝先生,我沒有經驗如何使算法正確...你解決我的問題是快速,再次感謝很多....問候:) – user2976890

3

你可以做到這一點像

int[] arr = {10, 20, 30}; 
int x = 1; 
int sum = x; 
for (int i = 0; i < arr.length; i++) 
{ 
    sum = sum + arr[i]; 
} 

你只需要添加新值之前獲得的總和。 所以它就像sum = sum+next_item

0

也儘量用於每個

int sum = 0; 
for (int no:arr){ 
    sum += no; 
} 
你保持覆蓋`sum`