Programa iterativo para hallar el factorial de un número
Escriba un programa iterativo en C/C++ y java para encontrar el factorial de un número positivo dado.
los factorial de un entero no negativo n
es el producto de todos los enteros positivos menores o iguales que n
. se denota por n!
. El factorial se utiliza principalmente para calcular el número total de formas en que n
objetos distintos se pueden organizar en una secuencia.
Por ejemplo,
5! = 1 × 2 × 3 × 4 × 5 = 120
(5 distinct objects can be arranged into a sequence in 120 ways).
The value of 0! is 1
La versión iterativa usa un ciclo para calcular el producto de todos los enteros positivos menores que iguales a n
. Dado que el factorial de un número puede ser enorme, el tipo de datos de la variable factorial se declara como unsigned long
.
La implementación se puede ver a continuación en C, Java y Python:
C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <stdio.h> // Función iterativa para encontrar el factorial de un número usando un ciclo for unsigned long factorial(int n) { unsigned long fact = 1; for (int i = 1; i <= n; i++) { fact = fact * i; } return fact; } int main() { int n = 5; printf("The Factorial of %d is %lu", n, factorial(n)); return 0; } |
Resultado:
The Factorial of 5 is 120
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Main { // Función recursivo para encontrar el factorial de un número public static long factorial(int n) { long fact = 1; for (int i = 1; i <= n; i++) { fact = fact * i; } return fact; } public static void main(String[] args) { int n = 5; System.out.println("The Factorial of " + n + " is " + factorial(n)); } } |
Resultado:
The Factorial of 5 is 120
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# Función recursivo para hallar el factorial de un número def factorial(n): fact = 1 for i in range(1, n + 1): fact = fact * i return fact if __name__ == '__main__': n = 5 print(f'The Factorial of {n} is {factorial(n)}') |
Resultado:
The Factorial of 5 is 120
La complejidad temporal de la solución anterior es O(n) y requiere espacio constante.
Ver también:
Ejercicio: Imprima eficientemente series factoriales en un rango dado