linux中使用while语句计算阶乘

linux中使用while语句计算阶乘,第1张

while计算阶乘还是比较简单的,假设需要计算1到3的阶乘:

jiechen=1 #申明变量

for bb in `seq 1 3` #计算1到3的阶乘

do

jiechen=`expr ${bb} \* ${jiechen}` #循环结算

done

echo "10! = ${jiechen}" #打印结果

#!/bin/bash

echo "请输入整数M、N(M>N)"

echo "M:"

read M

#判断M是否非空且为整数

if [ -z $M ]

then

echo "M 必须非空"

exit 1

elif ! [[ $M =~ ^-?[0-9]*$ ]]

then

echo "M 必须为整数"

exit 1

fi

echo "N:"

read N

#判断N是否非空且小于N的整数

if [ -z $N ]

then

echo "N 必须非空"

exit 1

elif ! [[ $N =~ ^-?[0-9]*$ ]]

then

echo "N 必须为整数"

exit 1

elif [ $M -le $N ]

then

echo "N必须小于M"

exit 1

fi

let "base = M-N"

result=1

#阶乘函数,引入result实现运算的线性增长

fac (){

base=$1

result=$2

if [ $base -gt 0 ]

then

let "result *= base"

let "base -= 1"

fac $base $result

fi

}

#计算阶乘

fac $base $result

echo "M-N的阶乘为$result"

exit 0

上次看错题目了

if [ -z $1 ]then 

echo 你没有输入参数

exit 1

fi

case $1 in 

*[!0-9]*) echo 你输入的不是合法数字

         exit 1

*) n=$1

esac

if [ $n -le 0 ]then 

echo 你输入的不是正整数

exit 1 

fi

frac=1

while [ $n -gt 0 ]

do 

frac=$((frac * n))

n=$((n - 1))

done

echo 阶乘为:$frac

echo 学号


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8753929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存