2012-10-10 30 views

Respuesta

19

Se puede utilizar el operador *' que soporta precisión arbitraria, promoviendo de forma automática el resultado de Bigint en caso de que se hubiera sobrepasado:

(reduce *' (range 1 1001)) 
+0

¡Gracias! Eso fue un poco más fácil y más limpio. – Sawny

+0

¿Cuáles son los pros/contras de hacerlo de esta manera en lugar del camino de @ Hamza? – Sawny

+0

Puede aceptar entrada arbitraria. @Hamza debería usar 'bigint' – noahlz

6

Put N al final de la serie que le hace un bigint,

(reduce * (range 1N 1001N)) 
2

coaccionar a los parámetros clojure.lang.BigInt

(reduce * (range (bigint 1) (bigint 1001))) 

Es decir si está trabajando con una biblioteca de terceros que no utiliza *'

(defn factorial' [n] 
    (factorial (bigint n))) 
Cuestiones relacionadas