【SICP练习】46 练习2.5



练习2.5

这道题的意思是有一个新的cons,其接受两个参数ab,并且返回(2^a)*(3^b)。这个比较容易实现了。

(define (cons a b)

   (* (expt 2 a) (expt 3 b)))

(cons 2 2)

;Value: 36

根据题中的意思,并将其与carcdr类比,得知car是要分离出2^acdr是要分离出3^b

(define (car x)

  (if (= 0 (remainder x 2))

     (+ 1 (car (/ x 2)))

      0))

(define (cdr x)

   (if (= 0 (remainder x 3))

      (+ 1 (cdr (/ x 3)))

       0))

测试一下咯。

(define x (cons 2 2))

;Value: x

(car x)

;Value: 2

(cdr x)

;Value: 2

版权声明:本文为 NoMasp柯于旺 原创文章,如需转载请联系本人。

posted @ 2015-02-17 20:10  nomasp  阅读(84)  评论(0编辑  收藏  举报