Programa C Para Hallar El 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.
 

Solución recursiva: 
el factorial se puede calcular utilizando la siguiente fórmula recursiva.

  n! = n * (n-1)!
  n! = 1 if n = 0 or n = 1

A continuación se muestra la implementación de factorial.

C

// C program to find factorial
// of given number
#include <stdio.h>
 
// Function to find factorial
// of given number
unsigned int factorial(unsigned int n)
{
 if (n == 0)
  return 1;
 return n * factorial(n - 1);
}
 
// Driver code
int main()
{
 int num = 5;
 printf("Factorial of %d is %d",
   num, factorial(num));
 return 0;
}
Producción:

Factorial of 5 is 120

Complejidad de tiempo : O(n)

Espacio auxiliar : O(n)
Solución iterativa: El 
factorial también se puede calcular iterativamente, ya que la recursividad puede ser costosa para números grandes. Aquí hemos mostrado el enfoque iterativo utilizando los bucles for y while. 
Usando el bucle For 

C

// C program to implement
// the above approach
#include <stdio.h>
 
// Function to find factorial of
// given number
unsigned int factorial(unsigned int n)
{
    int res = 1, i;
    for (i = 2; i <= n; i++)
        res *= i;
    return res;
}
 
// Driver code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
            num, factorial(num));
    return 0;
}

Producción:

Factorial of 5 is 120

Complejidad de tiempo : O(n)

Espacio auxiliar : O (1)
usando el ciclo while 

C

// C program for factorial of
// a number
#include <stdio.h>
 
// Function to find factorial
// of given number
unsigned int factorial(unsigned int n)
{
     if(n == 0)
          return 1;
    int i = n, fact = 1;
    while (n / i != n)
    {
        fact = fact * i;
        i--;
    }
    return fact;
}
 
// Driver code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
            num, factorial(num));
    return 0;
}

Producción:

Factorial of 5 is 120

Complejidad de tiempo : O(n)

Espacio auxiliar : O (1)
Solución de una línea (usando el operador ternario): 

C

// C program to find factorial
// of given number
#include <stdio.h>
 
int factorial(int n)
{
    // Single line to find factorial
    return ((n == 1 || n == 0) ? 1 :
             n * factorial(n - 1));
}
 
// Driver Code
int main()
{
    int num = 5;
    printf("Factorial of %d is %d",
            num, factorial(num));
    return 0;
}
 
// This code is contributed by  Rithika palaniswamy.

Producción: 

Factorial of 5 is 120

Complejidad de tiempo : O(n)

Espacio Auxiliar : O(n)

¡ 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 *