我想!1000
在 clojure 中计算,如何在不出现整数溢出异常的情况下做到这一点?
我的阶乘代码现在是:(reduce * (range 1 1001))
.
我想!1000
在 clojure 中计算,如何在不出现整数溢出异常的情况下做到这一点?
我的阶乘代码现在是:(reduce * (range 1 1001))
.
您可以*'
通过自动将结果提升到 BigInt 来使用支持任意精度的运算符,以防它溢出:
(reduce *' (range 1 1001))
将 N 放在数字的末尾,使其成为 bigint,
(reduce * (range 1N 1001N))
强制参数为clojure.lang.BigInt
(reduce * (range (bigint 1) (bigint 1001)))
即,如果您正在使用不使用的第三方库*'
(defn factorial' [n]
(factorial (bigint n)))