Aquí vamos a ver cómo calcular el factorial de un número. El factorial de un entero no negativo es la multiplicación de todos los enteros menores o iguales a n.
Por ejemplo, el factorial de 5 es 5*4*3*2*1, que es 120.
Método 1: uso recursivo
El factorial se puede calcular usando la siguiente fórmula recursiva.
A continuación se muestra la implementación de factorial:
#!/bin/bash # Recursive factorial function factorial() { product=$1 # Defining a function to calculate factorial using recursion if((product <= 2)); then echo $product else f=$((product -1)) # Recursive call f=$(factorial $f) f=$((f*product)) echo $f fi } # main program # reading the input from user echo "Enter the number:" read num # defining a special case for 0! = 1 if((num == 0)); then echo 1 else #calling the function factorial $num fi
Producción:
Enter the number 5 120 Enter the number 3 24 Enter the number 6 720
Método 2: Uso del bucle for
Acercarse:
- obtener un número
- Use for loop para calcular el factorial usando la siguiente fórmula
- hecho(n) = n * n-1 * n-2 * …
- Muestre el resultado.
A continuación se muestra la implementación usando el bucle for:
# shell script for factorial of a number # factorial using for loop echo "Enter a number" # Read the number read num fact=1 for((i=2;i<=num;i++)) { fact=$((fact * i)) } echo $fact
Producción:
Enter a number 5 120 Enter a number 7 5040 Enter a number 4 24
Método 3: usar el ciclo do-while
- obtener un número
- Use el ciclo do-while para calcular el factorial usando la siguiente fórmula
- hecho(n) = n * n-1 * n-2 * .. 1
- Muestre el resultado.
A continuación se muestra la implementación usando un bucle while.
# shell script for factorial of a number # factorial using while loop echo "Enter a number" # Read the number read num fact=1 # -gt is used for '>' Greater than sign while [ $num -gt 1 ] do fact=$((fact * num)) num=$((num - 1)) done # Printing the value of the factorial echo $fact
Producción:
Enter a number 10 3628800 Enter a number 2 2 Enter a number 9 362880
Publicación traducida automáticamente
Artículo escrito por utkarshanand221 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA