Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1723607
  • 博文数量: 171
  • 博客积分: 11553
  • 博客等级: 上将
  • 技术积分: 3986
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-25 20:28
文章分类

全部博文(171)

文章存档

2012年(2)

2011年(70)

2010年(9)

2009年(14)

2008年(76)

分类: Python/Ruby

2011-08-01 23:05:50

#!/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) |
给主人留下些什么吧!~~