Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Oblivi0n en 3 Octubre 2012, 18:33 PM

Título: Problema función factorial recursiva
Publicado por: Oblivi0n en 3 Octubre 2012, 18:33 PM
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?
Título: Re: Problema función factorial recursiva
Publicado por: die_guito en 4 Octubre 2012, 19:03 PM
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.