僕の解答
あんまり大きい/小さい数だと、2乗したときに精度外の値になるから…かな?
あたらしいsqrtはこんな感じ。
(define (average x y) (/ (+ x y) 2)) (define (improve guess x) (average guess (/ x guess))) (define (good-enough? pre-guess guess) (< (abs (- pre-guess guess)) 0.001)) (define (sqrt-iter pre-guess guess x) (if (good-enough? pre-guess guess) guess (sqrt-iter guess (improve guess x) x))) (define (sqrt x) (sqrt-iter 0 1.0 x)) (display (sqrt 2)) (newline)
解答例
所感
last-〜のほうが正確な英語っぽい。
初期値は、やっぱりxなのかー。
変化の度合いは完全に間違い。地頭が悪いな…。