Shell Program to Calculate the Factorial of a Number
Here we are going to see to calculate the factorial of a number. Factorial of a non-negative integer is the multiplication of all integers smaller than or equal to n.
For example factorial of 5 is 5*4*3*2*1 which is 120.
Method 1: Using Recursive
Factorial can be calculated using the following recursive formula.
Below is implementation of 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
Output:
Enter the number 5 120 Enter the number 3 24 Enter the number 6 720
Method 2: Using for loop
Approach:
- Get a number
- Use for loop to compute the factorial by using the below formula
- fact(n) = n * n-1 * n-2 * …
- Display the result.
Below is the Implementation using for loop:
# 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
Output:
Enter a number 5 120 Enter a number 7 5040 Enter a number 4 24
Method 3: using do-while loop
- Get a number
- Use do-while loop to compute the factorial by using the below formula
- fact(n) = n * n-1 * n-2 * .. 1
- Display the result.
Below is the Implementation using a while loop.
# 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
Output:
Enter a number 10 3628800 Enter a number 2 2 Enter a number 9 362880
Please Login to comment...