簡體   English   中英

總結所有以前的數字

[英]Summing up all previous numbers

我想實現一個算法,該算法采用第一個元素並構建總和,如下所示:

在此處輸入圖片說明

實際上,我正在使用1元素來構建和,然后在第一和第二中構建和,然后在第一,第二和第三中構建和等等。

我試過了:

                    for (int l = 0; l < valueList.size(); l++) {
                        double result = ((valueList.get(0) + valueList.get(l)) * (l + 1))/2;
                        resultList.add(result);
                    }

但是,這似乎不起作用。 如何實現這樣的算法?

謝謝您的回答!

嘗試這個

for (int l = 0; l < valueList.size(); l++) {

    double result = ((l>0) ? resultList.get(l-1) : 0) + valueList.get(l);
    resultList.add(result);
}

該算法類似於階乘函數:

f(x) = x + f(x-1)

您可以遞歸實現:

public int sum(int x) {
    if (x == 0) {
        return 0;

    }
    return x + sum(x - 1);
}

或迭代地:

int sum = 0;
for (int i = x; i > 0; i--) {
    sum += i;

}

暫無
暫無

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

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