Common Lispで階乗を計算する最速の方法は何ですか? まず、エンドテール再帰があります
(defun factorial (n &optional (acc 1))
(if (<= n 1)
acc
(factorial (- n 1) (* acc n))))
しかし、それは最速の方法ですか?
Common Lispで階乗を計算する最速の方法は何ですか? まず、エンドテール再帰があります
(defun factorial (n &optional (acc 1))
(if (<= n 1)
acc
(factorial (- n 1) (* acc n))))
しかし、それは最速の方法ですか?
階乗を計算するための単純なアルゴリズムを実装しました。より優れた漸近性能を持つものがいくつかあります。たとえば、http://www.luschny.de/math/factorial/FastFactorialFunctions.htmを参照してください。
最速のものは、階乗の素因数分解に基づいています。