2015/12/11

SICP 問題 3.64

(define (sqrt-improve guess x)
  (average guess (/ x guess)))

(define (average x y)
  (/ (+ x y) 2))

(define (stream-limit s tolerance)
  (let ((s1 (stream-car s))
        (s2 (stream-car (stream-cdr s))))
    (if (> tolerance (abs (- s1 s2)))
        s2
        (stream-limit (stream-cdr s) tolerance))))

(define (sqrt x tolerance)
  (stream-limit (sqrt-stream x) tolerance))
1.4142156862745097
gosh> (sqrt 2 0.0001)
1.4142135623746899

© 2022 wat-aro