Programa Shell para Calcular el Factorial de un Número

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.

n! = n*(n-1)! \\n! = 1 \hspace{1 mm}if\hspace{1 mm} n = 0\hspace{1 mm} or\hspace{1 mm} n = 1

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

Deja una respuesta

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