2015/12/17
SICP 問題 3.75
バグを探す問題
(define (make-zero-crossings input-stream last-value)
(let ((avpt (/ (+ (stream-car input-stream) last-value) 2)))
(cons-stream (sign-change-detector avpt last-value)
(make-zero-crossings (stream-cdr input-stream)
avpt))))
;; s1 s2 s3という順番でストリームが流れてくる時,この手続きでは
;; s1とs2の平均a1をとし,次のs3のところでa1とs3の平均a2とする.
;; ここではs2とs3の平均をとってa2として欲しいので引数を一つ増やす.
(define (make-zero-crossings input-stream last-value last-avpt)
(let* ((s1 (stream-car input-stream))
(avpt (/ (+ s1 last-value) 2)))
(cons-stream (sign-change-detector avpt last-avpt)
(make-zero-crossings (stream-cdr input-stream)
s1 avpt))))