SICP 习题2.5 2^a*3^b的cons car cdr过程

计算cos-b的结果就是 2a3b 的数值
(car-b z)就是将z不断除2,就可以得到a,同理可以得到b
因为2,3互质,所有整除的时候不会影响
(define cons-b
  (lambda (x y)
    (cond ((and (> x 0) (> y 0)) (* 6 (cons-b (- x 1) (- y 1))))
      ((> x 0) (* 2 (cons-b (- x 1) y)))
      ((> y 0) (* 3 (cons-b x (- y 1))))
      (else 1))))

(define car-b
  (lambda (x)
    (if (= (remainder x 2) 0) (+ 1 (car-b (/ x 2))) 0)))

(define cdr-b
  (lambda (x)
    (if (= (remainder x 3) 0) (+ 1 (cdr-b (/ x 3))) 0)))

(define z (cons-b 3 2))

(newline)
(display (car-b z))
(newline)
(display (cdr-b z))

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值