我使用ECL和newlisp運行面函數。關於newlisp中的階乘
ECL:
>(defun fac (n) (if (= n 1) 1 (* n (fac (- n 1)))))
>(fac 20)
22432902008176640000
>(fac 30)
2265252859812191058636308480000000
>(fac 40)
815915283247897734345611269596115894272000000000
...
newlisp
>(define (fac n) (if (= n 1) 1 (* n (fac (- n 1)))))
>(fac 20)
22432902008176640000
>(fac 30)
-8764578968847253504
爲什麼newlisp與ECL返回不同的結果呢?
(FAC 100)=> 9.332621544e + 157,這是偉大的!但是,newlisp不能計算(fac 1000),但ECL確實! –
順便說一句,爲什麼'+ - * /'不像CL那樣具有多態性? –
該手冊告訴您如何定義這些運算符,以便它們可以使用不精確的FP編號以及精確的整數... :) – cormullion