【SICP练习】46 练习2.5
练习2.5
这道题的意思是有一个新的cons,其接受两个参数a、b,并且返回(2^a)*(3^b)。这个比较容易实现了。
(define (cons a b)
(* (expt 2 a) (expt 3 b)))
(cons 2 2)
;Value: 36
根据题中的意思,并将其与car和cdr类比,得知car是要分离出2^a,cdr是要分离出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柯于旺 原创文章,如需转载请联系本人。