(progn
  (defun collatz (n)
    (if (evenp n)
        (/ n 2)
      (+ (* 3 n) 1)))

  (defun collatz-list (ls)
    (if (not (listp ls))
        (setq ls (cons ls ())))
    (let* ((temp (collatz (car ls))))
      (if (= 1 temp)
          (cons temp ls)
        (collatz-list (cons temp ls)))))

  (collatz-list 3))