关闭

SICP 练习1.18

43人阅读 评论(0) 收藏 举报
分类:

与做ab的方法类似,将b减半,将a加倍,直到b0

(define (double x) (+ x x))
(define (halve x) (/ x 2))
(define (even? x)
  (= (remainder x 2) 0))

(define (fast-multiply ret a b)
  (cond ((= b 0) ret)
        ((even? b) (fast-multiply ret (double a) (halve b)))
        (else (fast-multiply  (+ ret a) a (- b 1)))))

(define (multiply a b)
  (fast-multiply 0 a b))

(multiply 8 11)
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:59523次
    • 积分:3594
    • 等级:
    • 排名:第9128名
    • 原创:315篇
    • 转载:3篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论