Programa Java para factorial de un número

Factorial de un entero no negativo, es la multiplicación de todos los enteros menores o iguales a n. Por ejemplo, el factorial de 6 es 6*5*4*3*2*1, que es 720.factorial 

recursivo: 

Java

// Java program to find factorial of given number
class Test
{
 // method to find factorial of given number
 static int factorial(int n)
 {
  if (n == 0)
  return 1;
   
  return n*factorial(n-1);
 }
  
 // Driver method
 public static void main(String[] args)
 {
  int num = 5;
  System.out.println("Factorial of "+ num + " is " + factorial(5));
 }
}

Complejidad de tiempo : O(n)

Espacio Auxiliar : O(n)

Solución iterativa: 

Java

// Java program to find factorial of given number
class Test
{
 // Method to find factorial of given number
 static int factorial(int n)
 {
  int res = 1, i;
  for (i=2; i<=n; i++)
   res *= i;
  return res;
 }
  
 // Driver method
 public static void main(String[] args)
 {
  int num = 5;
  System.out.println("Factorial of "+ num + " is " + factorial(5));
 }
}

Complejidad de tiempo : O(n)

Espacio Auxiliar : O(1)

Solución de una línea (usando el operador ternario): 

Java

// Java program to find factorial
// of given number
class Factorial {
 
int factorial(int n)
{
 
 // single line to find factorial
 return (n == 1 || n == 0) ? 1 : n * factorial(n - 1);
 
}
 
 
// Driver Code
public static void main(String args[]) 
{
 Factorial obj = new Factorial();
 int num = 5;
 System.out.println("Factorial of " + num +
     " is " + obj.factorial(num));
}
}
// This code is contributed by Anshika Goyal.

Complejidad de tiempo: O(n)

Espacio Auxiliar: O(n)

Las soluciones anteriores causan desbordamiento para números pequeños. Consulte factorial de gran número para obtener una solución que funcione para grandes números. ¡ Consulte el artículo completo sobre Programa para factorial de un número para obtener más detalles!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *