从我在网上找到的这个代码示例中,哪些函数是非加速流,单一加速流和超加速流?提前谢谢。
引用:lawfulsamurai.blogspot.com/2009/01/sicp-section-35-streams.html
(define (log2-summands n)
(cons-stream (/ 1.0 n)
(stream-map - (log2-summands (+ n 1)))))
(define log2-stream
(partial-sums (log2-summands 1)))
(define log2-stream-euler
(euler-transform log2-stream))
(define log2-stream-accelerated
(accelerated-sequence euler-transform log2-stream))
答案 0 :(得分:3)
嗯,你没有告诉我们一个"单独加入"或者"超级加速" 是,因此很难说它们在代码中的位置。这就像在玩Waldo"在哪里,但不知道什么是" Waldo"是
那就是说,我可以看到log2-summands,euler-transform,make-tableau和accele-sequence都是返回流,所以看起来它们似乎是候选者。现在,如果我们真正查看您链接到的博文SICP Section 3.5 Streams,我们会看到:
使用部分和的直接求和。 20后,log2的值在0.6687714031754279和0.7163904507944756之间振荡 迭代。
(define log2-stream (partial-sums (log2-summands 1)))
使用欧拉变换的Log2。 10次迭代后,值收敛到0.6932106782106783。
(define log2-stream-euler (euler-transform log2-stream))
- 醇>
加速求和。在4次迭代中,值收敛到0.6931488693329254。
(define log2-stream-accelerated (accelerated-sequence euler-transform log2-stream))
听起来 log2-stream , log2-stream-euler 和 log2-stream-accelerated 分别是"未加速的流,单一加速流和超加速流"。