如何制作累积序列?

时间:2013-02-07 15:24:21

标签: clojure cumulative-sum

说我有一个如下的懒惰序列:

(def s (iterate inc 1))
(take 10 s)
=> (1 2 3 4 5 6 7 8 9 10)

现在,我想生成s累积和的序列,如下所示:

=> (1 3 6 10 15 ...)

我该怎么做? 我尝试的是使用atom并累积总和(变异)这是生成累积序列的唯一方法还是有更好的方法来做到这一点?

注意:上述累积金额只是一个例子。源序列可以是其他序列。所以我不能使用公式:s(n) = n(n+1)/2

1 个答案:

答案 0 :(得分:28)

(take 10 (reductions + s))
=> (1 3 6 10 15 21 28 36 45 55)