Hola, tengo el siguiente problema respecto a la siguiente función recursiva que calcula la función factorial.
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?
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.