shell递归实现n的阶乘
时间: 2023-07-25 15:38:04 浏览: 49
下面是一个使用递归实现计算 n 的阶乘的 Shell 脚本:
```
#!/bin/bash
factorial() {
if [[ $1 -eq 1 ]]; then
echo 1
else
local temp=$(( $1 - 1 ))
local result=$(factorial $temp)
echo $(( $result * $1 ))
fi
}
read -p "请输入一个正整数 n: " n
if [[ $n -lt 0 ]]; then
echo "输入的不是正整数!"
else
result=$(factorial $n)
echo "$n 的阶乘为 $result"
fi
```
在这个脚本中,`factorial` 函数使用递归实现了计算 n 的阶乘的过程。当输入的数为 1 时,返回 1;否则,将 n 减 1 并递归调用 `factorial` 函数计算 n-1 的阶乘。最后将计算结果与 n 相乘并返回。在主程序中,读取用户输入的正整数 n,并调用 `factorial` 函数计算 n 的阶乘。
相关问题
shell利用函数实现阶乘
好的,这是一个利用函数实现阶乘的shell代码:
```
#!/bin/bash
factorial() {
if [[ "$1" -eq 0 || "$1" -eq 1 ]]; then
echo 1
else
echo $(($1 * $(factorial $(($1 - 1))))))
fi
}
echo "Enter a number to compute its factorial:"
read num
result=$(factorial $num)
echo "The factorial of $num is: $result"
```
这个脚本定义了一个名为 `factorial` 的函数,用于计算阶乘。首先检查输入的数是否为 0 或 1,如果是则返回 1,否则使用递归调用函数本身来计算阶乘。最后,将计算结果输出到屏幕上。
shell脚本中的阶乘
在shell脚本中,阶乘可以通过循环和递归两种方式实现。其中,循环方式比较简单,可以使用for或while循环实现。递归方式则需要定义一个函数来实现。下面是两种方式的示例代码:
循环方式:
```
#!/bin/bash
echo "请输入一个正整数:"
read num
result=1
for ((i=1;i<=num;i++))
do
result=$[$result*$i]
done
echo "$num 的阶乘为:$result"
```
递归方式:
```
#!/bin/bash
function factorial(){
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$[$1-1]
local result=$(factorial $temp)
echo $[$result*$1]
fi
}
echo "请输入一个正整数:"
read num
result=$(factorial $num)
echo "$num 的阶乘为:$result"
```在shell脚本中,阶乘可以通过循环和递归两种方式实现。其中,循环方式比较简单,可以使用for或while循环实现。递归方式则需要定义一个函数来实现。下面是两种方式的示例代码:
循环方式:
```
#!/bin/bash
echo "请输入一个正整数:"
read num
result=1
for ((i=1;i<=num;i++))
do
result=$[$result*$i]
done
echo "$num 的阶乘为:$result"
```
递归方式:
```
#!/bin/bash
function factorial(){
if [ $1 -eq 1 ]
then
echo 1
else
local temp=$[$1-1]
local result=$(factorial $temp)
echo $[$result*$1]
fi
}
echo "请输入一个正整数:"
read num
result=$(factorial $num)
echo "$num 的阶乘为:$result"
```