またまた階乗です。ヲレはこの手のコードはデフォルトiterate使って 遅延シーケンスつくるです。

(take 10 (iterate (fn[[a b]][(* a b) (inc b)]) [1 2]))

Clojureだと末尾最適化が?なのではありますがコーンなコードでいかがでしょうか。

(defn fact-iter [product counter max-count]
  (if (> counter max-count)
    product
    (recur (* counter product)
           (inc counter )
           max-count))
  )
(defn factorial [n]
  (fact-iter 1 1 n))
(factorial 6)