📜  计算一个数的因数的 Shell 程序

📅  最后修改于: 2022-05-13 01:57:31.565000             🧑  作者: Mango

计算一个数的因数的 Shell 程序

在这里,我们将看到如何计算一个数的阶乘。非负整数的因数是所有小于或等于 n 的整数的乘积。

例如,5 的阶乘是 5*4*3*2*1,即 120。

方法 1:使用递归

可以使用以下递归公式计算因子。



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

下面是阶乘的实现:

#!/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

输出:

Enter the number
5
120

Enter the number
3
24

Enter the number
6
720

方法二:使用for循环。

方法:

  • 获取号码
  • 使用 for 循环通过使用以下公式计算阶乘
  • 事实(n) = n * n-1 * n-2 * ...
  • 显示结果。

下面是使用 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

输出:

Enter a number
5
120

Enter a number
7
5040

Enter a number
4
24

方法三:使用do-while循环。

  • 获取号码
  • 使用 do-while 循环通过使用以下公式计算阶乘
  • 事实(n) = n * n-1 * n-2 * .. 1
  • 显示结果。

下面是使用 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            

输出:

Enter a number
10
3628800

Enter a number
2
2

Enter a number
9
362880