(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次方根的程序
这个程序对于我来说比较难写,那些函数复合搞得头晕.调试了好久才成功
转载于:https://www.cnblogs.com/science/archive/2007/01/06/613675.html