码迷,mamicode.com
首页 > 系统相关 > 详细

shell下的基础程序题练习

时间:2016-06-20 00:54:54      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:进度条/斐波那契数/1-100各种求和

1.简单的进度条程序

技术分享

lable数组 相当于进度条前进时,那个刷新的圆圈,进度条前进时显示进度,用count%显示

程序运行结果:技术分享

2.1-100之间的求和

   1>用while实现                        2>用for   in 实现

   技术分享           技术分享    

  程序运行结果:

  技术分享

3>递归实现

digui

 function add()                          

  {

  local val=$1

  local sum=0

  local add1=0

  local add2=0

 if [ $val -eq 1 ];then

   echo 1

   return

 fi

  add1=$val

  let val--

  add2=$(add $val)

  let sum=$add1+$add2

   echo $sum

}

 function main()

 {

    read n

    add $n

 }

 main

程序运行结果:

 技术分享

4>利用seq 和bc 进行求和

  seq   n :生成到这个数的所有数

  |bc:利用|bc可以求和

例如:

技术分享

所以1-100求和可以这样写:

技术分享

其中tr表示替换,seq出来的所有数都有换行符,通过tr将‘\n‘替换为‘+‘。后面的sed 是将最后一个‘+‘号替换为‘\n‘,再通过bc进行求和。

3.求第n个斐波那契数

  1>非递归实现

local 修饰的变量是局部变量

 86 function fib()

 87 { 

 88   local val=$1

 89    while [ $val -eq 0 -o $val -eq 1 ]

 90   do

 91    echo 1

 92    return

 93  done 

 94   i=1

 95   j=1

 96    while [ $val -ge 2 ]

 97    do

 99   let fibn=$i+$j

 100     i=$j

 101     j=$fibn

 102   ((val--))

 103   done

 105 }

 106 function main()

 107 {

 108   read n

 109   fib $n

 110   echo $fibn

 112 }

113 main

2>递归实现

思想:当n=1或者n=0时,return 1。因为第n个斐波那契数是第n-1个和第n-2个数之和,所以对传过来的n值先减1在递归保存值,再对n减1递归保存值,第n个就是两个保存者之和。


115 function fib()

116 {

117  local val=$1

118  local fib1=0

119  local fib2=0

120  fibc=0

121 if [ $val -eq 0 -o $val -eq 1 ];then

122 echo 1

123 return

124 fi

125 let val--

126 fib1=$(fib $val)

127 let val--

128 fib2=$(fib $val)

129 let fibc=$fib1+$fib2

130 echo $fibc

131 

132 }

133 

134 function main()

135 {

136   read n

137   fib $n

138 

139 }

140 main

程序运行结果:

技术分享





本文出自 “输出菱形图案” 博客,请务必保留此出处http://10541571.blog.51cto.com/10531571/1790879

shell下的基础程序题练习

标签:进度条/斐波那契数/1-100各种求和

原文地址:http://10541571.blog.51cto.com/10531571/1790879

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!