(defn fact [arg]
(reduce
(fn [acc idx] (* acc (+ 1 idx)))
1
(range 0 arg)))
(println (fact 5) (fact 0) (fact 10))
KGRlZm4gZmFjdCBbYXJnXQogIChyZWR1Y2UgCiAgICAoZm4gW2FjYyBpZHhdICgqIGFjYyAoKyAxIGlkeCkpKSAKICAgIDEKICAgIChyYW5nZSAwIGFyZykpKQoKKHByaW50bG4gKGZhY3QgNSkgKGZhY3QgMCkgKGZhY3QgMTApKQ==