Code Review
Compare your solutions
(define (cons x y)
(* (exp 2 x) (exp 3 y)))
(define (car z)
(define (car-iter n counter)
(if (and (>= n 2) (divides? n 2))
(car-iter (/ n 2) (+ counter 1))
counter))
(car-iter z 0))
(define (cdr z)
(define (cdr-iter n counter)
(if (and (>= n 3) (divides? n 3))
(cdr-iter (/ n 3) (+ counter 1))
counter))
(cdr-iter z 0))
; HELPERS:
(define (exp base degree)
(define (exp-iter b n a)
(cond
((< n 0) (/ 1 (exp-iter b (- n) a)))
((= n 0) (if (= a 1) 1 a))
((even? n) (exp-iter (* b b) (/ n 2) a))
(else (exp-iter b (- n 1) (* a b)))))
(exp-iter base degree 1))
(define (divides? a b)
(= (remainder a b) 0))
(define (>= a b) (not (< a b)))