defmultiとdefmethodで階乗を計算しようとしました。clojure:defmultiとdefmethodを使った数の計算法
(defmulti factorial identity)
(defmethod factorial 0 [_] 1)
(defmethod factorial :default [num]
(* num (factorial (dec num))))
それはそれは私の好奇心は、我々は大きな数字のための階乗を計算するにはどうすればよい
ある階乗40
(-> 40 factorial)
ArithmeticException integer overflow clojure.lang.Numbers.throwIntOverflow
ための整数オーバーフローの例外を示し
(-> 10 factorial) ;;3628800
(-> 2 factorial) ;; 2
少数のために正常に動作しますdefmultiとdefmethodを使用していますか?
が重複する可能性 - (https://stackoverflow.com/questions/12826649/clojure-calculate-with-big-numbers) – cske
マイナーしつこいを[Clojureのは、大きな数字で計算]: ' ( - > x階乗) 'は、広告は '(factorial x)'だけではありません。スレッディングマクロは素晴らしいですが、それらをすべて使いこなすことは過度です – cfrick