Problema función factorial recursiva

Iniciado por Oblivi0n, 3 Octubre 2012, 18:33 PM

0 Miembros y 1 Visitante están viendo este tema.

Oblivi0n

Hola, tengo el siguiente problema respecto a la siguiente función recursiva que calcula la función factorial.

Código (java) [Seleccionar]
public long factorial(int n){
if(n==0){ // caso base
return 1;
}else if(n<0){ // aqui debería de ir un try catch
return  -1;
}else{
return n*factorial(n-1); // llamada recursiva
}
}


El caso es que esta función, tal como está definida, solo llega a calcular el factorial de 25, y necesito  pasar un test jUnit que debe de calcular el factorial de 30, el problema radica en que por ciertos motivos no puedo cambiar el tipo de dato.

¿Alguien tiene idea de como conseguir calcular el factorial de un número mayor de 25?

die_guito

Hola,
el problema es que el numero que quieres calcular se te sale fuera del dominio del tipo primitivo long, prueba a hacerlo con BigInteger ( pero ten cuidado porque BigInteger no funciona como un tipo primitivo sino como una clase) y con él no tendras problemas con el tamaño del numero ya que a él le puedes asignar un numero tan grande como la memoria de tu ordenador.
Un saludo y espero que te sirva.