The recursions we have seen so far have involved linear structures, that is, lists in which only the top level was involved. A second class of recursive programs operates on both halves of a CONS cell; in general, such functions call themselves twice.
; Copy a tree structure
(DEFUN COPY-TREE (X)
(IF (CONSP X)
(CONS (COPY-TREE (CAR X))
(COPY-TREE (CDR X)))
X) )
; Test equality of structure
(DEFUN EQUAL (X Y)
(COND ((EQL X Y) T)
((OR (ATOM X) (ATOM Y)) NIL)
((EQUAL (CAR X) (CAR Y))
(EQUAL (CDR X) (CDR Y)) )) )
Contents    Page-10    Prev    Next    Page+10    Index