计算一个数的因数的 Shell 程序
在这里,我们将看到如何计算一个数的阶乘。非负整数的因数是所有小于或等于 n 的整数的乘积。
例如,5 的阶乘是 5*4*3*2*1,即 120。
方法 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