LispでFizzBuzz
お世話になっております。
最近はLispを少しかじっているのですが、以前に書いたFizzBuzzが再帰ではなく反復で書いてあったので、再帰でも書いてみました。
(defun fizzbuzz (begin end) (cond ((> begin end) nil) ((and (= 0 (mod begin 3)) (= 0 (mod begin 5))) (cons "FizzBuzz" (fizzbuzz (+ begin 1) end))) ((= 0 (mod begin 3)) (cons "Fizz" (fizzbuzz (+ begin 1) end))) ((= 0 (mod begin 5)) (cons "Buzz" (fizzbuzz (+ begin 1) end))) ((cons begin (fizzbuzz (+ begin 1) end)))))
出力するには、例えば次のようにします。
(dolist (v (fizzbuzz 1 100)) (format t "~A~%" v))
再帰もいいですよね。
以上