SICP 习题1.46 iterative-improve

来源:互联网 发布:php服务器程序招聘 编辑:程序博客网 时间:2024/05/18 03:03

LISP的括号非常重要,括号打错,整个程序就错了。

(define (iterative-improve good-enough? improve)    (define (iter x)        ;(newline)        ;(display x)        ;(newline)        ;(display "HELLO")        (if (good-enough? x)            x             (iter (improve x))))    (lambda (guess) (iter guess)))(define (sqrt x)     (define square         (lambda (a) (* a a)))    (define average        (lambda (a y) (/ (+ a y) 2.0)))    (define good-enough?         (lambda (guess)            ;(newline)             ;(display "GOOD")            (< (abs (- (square guess) x)) 0.001)))    (define improve         (lambda (guess)            ;(newline)            ;(display "IMPROVE")            (average guess (/ x guess))))    ((iterative-improve good-enough? improve) 1.0))(newline)(display (sqrt 9))(define tolerance 0.0001)(define fixed-point    (lambda (f x)        (define good-enough?            (lambda (x)                (< (abs (- (f x) x)) tolerance)))        (define improve            (lambda (x)                 (f x)))        ((iterative-improve good-enough? improve) 1.0)))(newline)(display (fixed-point cos 1.0))
0 0
原创粉丝点击