在Common Lisp中计算阶乘的最快方法是什么?首先,有尾端递归
(defun factorial (n &optional (acc 1))
(if (<= n 1)
acc
(factorial (- n 1) (* acc n))))
但这是最快的方式吗?
答案 0 :(得分:1)
您已经实现了用于计算阶乘的朴素算法。有几个具有更好的渐近性能,例如参见http://www.luschny.de/math/factorial/FastFactorialFunctions.htm
最快的是基于阶乘的素数分解。