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

演示结果

image

posted @ 2025-09-07 17:43  ITZhong  阅读(24)  评论(0)    收藏  举报