总结以前的所有数字

时间:2014-01-11 21:04:01

标签: java algorithm

我想实现一个算法,该算法接受第一个元素并构建如下的总和:

enter image description here

事实上,我正在取1元素并构建总和,然后是第1和第2个并构建总和,然后是第1个,第2个和第3个并构建总和等。

我试过了:

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

然而,这似乎不起作用。如何实现这样的算法?

我很感激你的回答!

2 个答案:

答案 0 :(得分:1)

试试这个

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

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

答案 1 :(得分:0)

该算法类似于阶乘函数:

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;

}
相关问题