3.17
只算序对数,不同的需要map辅助数据结构
(define (count-pairs x)
(if (not (pair? x))
0
(if (pair? (car x))
(+ 1 (count-pairs (car x)) (count-pairs (cdr x)))
(count-pairs (cdr x)))))
3.18
(define (cycle-checking x)
(define (iter head tail)
(if (null? tail)
#f
(if (cycle-checking (car tail))
#t
(if (eq? head (car tail))
#t
(iter head (cdr tail))))))
(if (pair? x)
(if (cycle-checking (car x))
#t
(iter (car x) (cdr x)))
#f))