#!/bin/bash
##set -x
#【程序26】
#题目:利用递归方法求5!。
#1.程序分析:递归公式:fn=fn_1*4!
#2.程序源代码:
ret=1
function fact(){
local j=$1
local sum=0
if [ $j -eq 0 ];then
sum=1
else
fact $(($j-1))
ret=$(( $j*$ret ))
fi
}
for i in {0..10};do
ret=1
fact $i
echo "$i! = $ret"
done
#!/bin/bash
#set -x
#【程序27】
#题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
#1.程序分析:
#2.程序源代码:
function palin(){
local n=$1
local next
if [ $n -le 1 ];then
read next
echo
echo $next
else
read next
palin $(($n - 1 ))
echo $next
fi
}
i=5
palin $i
#!/bin/bash
#【程序28】
#题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
# 3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
# 问第一个人,他说是10岁。请问第五个人多大?
#1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
# 第四人的岁数,依次类推,推到第一人(10岁),再往回推。
#
#set -x
ret=0
function age(){
local n=$1
local c;
if [ $n -eq 1 ];then
ret=10
else
age $(($n - 1 ))
ret=$(( $ret + 2 ))
fi
}
age 5
#!/bin/bash
#【程序29】
#题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
#1. 程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)
#2.程序源代码:
set -x
read x
a=$(( $x / 10000 ))
b=$(( $x % 10000 / 1000 ))
c=$(( $x % 1000 /100 ))
d=$(( $x % 100 / 10 ))
e=$(( $x % 10 ))
echo "there are ${#x} $e $d $c $b $a"
#!/bin/bash
##set -x
#题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
#1.程序分析:同29例
#2.程序源代码:
read x
for i in $(seq 0 $((${#x}/2)) );do
a=${x:$i:1}
b=${x:$((${#x} - $i - 1)):1}
if [ $a -ne $b ];then
echo "this number is not"
exit 0
fi
done
echo "this number is huiwen"
阅读(718) | 评论(0) | 转发(0) |