shell函数递归调用实现阶乘算法
阶乘举例:!5=1x2x3x4x5的值
优化写法:!5=5x4!
思路:定义一个函数➡函数判断若阶乘值输入1则直接输出原值➡若输入其他阶乘值则先调用函数自身计算阶乘值-1的结果再乘以输入的阶乘值得到实际的阶乘结果➡交互输入取值计算结果
#!/bin/bash
#功能:递归调用函数实现阶乘
#定义函数
self_fun(){
#定义一个变量num接收输入的参数
num=$1
#执行判断,若输入为1则直接输出结果num
if [ $num -eq 1 ];then
echo "$num"
else
#声明一个本地变量jianyi,接收实际阶乘数-1的值,比如阶乘数为5,-1为4
local jianyi=$((num-1))
#函数自调用计算实际阶乘数-1后前面相乘的值并传递给result
local result=$(self_fun $jianyi)
#计算实际阶乘数的结果
echo "$((result*num))"
fi
}
#交互输入阶乘值
while true
do
read -p "请输入一个您要查询的阶乘:" value
#计算结果
result=$(self_fun ${value})
#输出结果
echo "${value}的阶乘是: ${result}"
done
演示结果

浙公网安备 33010602011771号