In LISP, you should always recurse with the CAR as well as the CDR when writing *-functions.