I'm not sure if I am correct in my thinking, but I always try to limit my use of recursive methods to very small tasks, like, for example (something I got from Gile a think...):
(defun lst->pt (lst)
(if lst
(cons (list (car lst) (cadr lst) (caddr lst))
(lst->pt (cdddr lst)))))
As I've heard that recursive methods have a limit that is the stack memory.