わざわざ再帰にしなくても、doでこんな風に書けるし、

(defun dump (l16)
(do ((l l16 (cdr l)))
((null l))
(let ((ch (car l)))
(print ch))))

dolistの方が良い気がするし、敢えて再帰で書くなら、

(defun rdump (l)
(when l
(let ((ch (car l)))
(print ch))
(dump (cdr l))))

こんな風だと思う。