SICP习题1.45解答

(define (average-damp f)
  (lambda (x)
    (/ (+ (f x) x) 2)))
(define (fixed-point f guess)
  (define (closed-enough? v1 v2)
    (< (abs (- v1 v2)) 0.000000000001))
  (let ((next (f guess)))
    (cond ((closed-enough? next guess) next)
          (else (fixed-point f next)))))
(define (compose f g)
  (lambda (x)
    (f (g x))))
(define (cube x)
  (* x x x))
(define (repeated f n)
  (cond ((= n 0) (lambda (x) x))
        (else (compose f (repeated f (- n 1))))))
(define (pow f n)
  (define (produce f g)
    (lambda (x)
      (* (f x) (g x))))
  (cond ((= n 1) (lambda (x) (f x)))
        (else (produce f (pow f (- n 1))))))
(define (get-root x m)
  (define (transform n)
    ((repeated average-damp n) (lambda (y) (/ x ((pow (lambda (y) y) (- m 1)) y)))))
  (fixed-point (transform 5) 1.0))

求n次方根的程序
这个程序对于我来说比较难写,那些函数复合搞得头晕.调试了好久才成功
posted @ 2007-01-06 23:30  浅蓝の天   阅读(181)  评论(0编辑  收藏  举报