我想实现一个算法,该算法接受第一个元素并构建如下的总和:
事实上,我正在取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);
}
然而,这似乎不起作用。如何实现这样的算法?
我很感激你的回答!
答案 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;
}