factorial in Clojure. Using memonize. Numeric Data Types.
Code
;; factorial.clj
(defn factorial [number]
(println (str "factorial of " number))
(if (= number 1)
;; 1
;; 1M
1N ;; this might be better
(* number (factorial (- number 1)))))
(factorial 4)
(factorial 20)
(factorial 40) ;; won't work without arbitary precision or long
(println (factorial 50))
(str (factorial 5))
(def factm (memoize factorial))
(factm 4)
(factm 4)
(factm 50)
(factm 49)
(factm 50)
(factm 49)
(factm 10)
(factm 50)
(factm 10)
(factm 9)
(defn fact-recur [number]
(println (str "factorial of " number))
(if (= number 1)
;; 1
;; 1M
1N ;; this might be better
(* number (recur (- number 1))))) ;; this doesnt work