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; }
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