Exercise 3.55. Define a procedure partial-sums that takes as argument a stream S and returns the stream whose elements are S0, S0 + S1, S0 + S1 + S2, .... For example, (partial-sums integers) should be the stream 1, 3, 6, 10, 15, ....
这里的 partial-sums 即前 n 项和组成的列表。
如果我们求 (partial-sums integers) 那么我们得到的列表各项应该为
- integers 的第一项
- partial-sums 的第一项 + integers 的第二项
- partial-sums 的第二项 + integers 的第三项
- 以此类推
所以我们需要把 partial-sums 保存下来,以便在求第 n 项的时候,我们可以使用 partial-sums 中的第 n - 1 项 + integers 的第 n 项。这与之前的 factorials 练习 3.54 是一样的。
(load "stream.scm")
(load "50-stream-map.scm")
(load "integer-stream.scm")
(define (partial-sums s)
(define partial (cons-stream (stream-car s)
(add-streams partial (stream-cdr s))))
partial)