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次方根的程序
这个程序对于我来说比较难写,那些函数复合搞得头晕.调试了好久才成功

转载于:https://www.cnblogs.com/science/archive/2007/01/06/613675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值