Foro de elhacker.net

Programación => 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
  1. public long factorial(int n){
  2. if(n==0){ // caso base
  3. return 1;
  4. }else if(n<0){ // aqui debería de ir un try catch
  5. return  -1;
  6. }else{
  7. return n*factorial(n-1); // llamada recursiva
  8. }
  9. }

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.