;;;; bottles1.lsp

;;; Solution based on recursion
;;; 
(defun bottles (X)
 "Song '99 bottles on the wall' "
  (cond ((zerop X)
	 (format t "Now, they are all gone."))
	((= X 1)
	 (format t "1 bottle of beer on the wall. ")
	 (bottles (take_one X)))
	(t
	 (format t "~a bottles of beer on the wall. " X)
	 (bottles (take_one X)))))

(defun take_one (In)
 "Take one bottle" 
  (let ((Out (- In 1)))
    (format t "Take one down, and pass it around.~%")
    Out))

