博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell 整理(36)===写斐波那契数列
阅读量:5889 次
发布时间:2019-06-19

本文共 1216 字,大约阅读时间需要 4 分钟。

(一)写如下所示数列

[root@localhost ding1]# bash 5.sh 

2/1

3/2

5/3

8/5

13/8

21/13

34/21

55/34

89/55

144/89

233/144

shell代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
 
>aa
>bb
echo 
1 2 | 
xargs 
-n1 >aa
 
for 
in 
`
seq 
20`
do
a=`
cat 
aa | 
sed 
-n 
''
$i
'p'
`
b=`
cat 
aa |
tail 
-1`
echo 
$(($a+$b)) >>aa
c=`
cat 
aa | 
sed 
-n 
''
$(($i+1))
'p'
`
echo 
$c/$a >>bb
done
cat 
bb

计算结果如下,用awk 计算

1
[root@localhost ding1]
# bash 5.sh |awk -F '/' '{a+=$1/$2;print a}'

2

3.5

5.16667

6.76667

8.39167

10.0071

11.6261

13.2437

14.8619

16.4799

18.098

19.716

21.334

22.9521

24.5701

26.1881

27.8062

29.4242

31.0422

32.6603

[root@localhost ding1]# 



上面的代码是输出文本,略微有点复杂,我补充第二中方法:

shell 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
 
a=1    
#定义一个变量a 和 b 
b=2
 
for 
in 
`
seq 
20`
do
        
echo 
$b/$a    
#shell 解析的时候是从上往下一步步来的,所以顺序是非常重要的。
        
c=$((a+b))    a=$b 和 b=$c不能颠倒过来
        
a=$b        
        
b=$c
done
 
第一次循环:  2
/1     
c=3   a=2  b=3
第二次循环:  3
/2     
c=5  a=3   b=5
第三次循环:  5
/3     
c=8   a=5  b=8
........

如果打印一个这样的数列是不是也会了

例如:

1

2

3

5

8

........

shell 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash
 
a=1
b=2
echo 
1
for 
in 
`
seq 
20`
do
        
echo 
$b
        
c=$((a+b))
        
a=$b
        
b=$c
done

输出如下:

[root@localhost ding1]# bash 6.sh

1

2

3

5

8

13

21

本文转自 大雪儿 51CTO博客,原文链接:http://blog.51cto.com/dingxue/1970438,如需转载请自行联系原作者
你可能感兴趣的文章
Swift计时器对用于网络不好时
查看>>
EXT最新最全教程
查看>>
我的友情链接
查看>>
C++操作数据库写入到json配置文件中
查看>>
笨办法理解原型链
查看>>
我的友情链接
查看>>
Transferring Files with SFTP or SCP
查看>>
Linux0.00 “boot.s” 程序详解
查看>>
闭包与node.js
查看>>
Android横竖屏切换View设置不同尺寸或等比例缩放的XML解决方案
查看>>
db2look+db2move工具简介及其应用
查看>>
.NET开发者必备的免费工具
查看>>
淘宝HSF服务的原理以及简单的实现
查看>>
参加编程培训(Python、Java)面授到底值不值?
查看>>
树莓派SSH命令行连接wifi
查看>>
sed
查看>>
c#拦截程序的运行
查看>>
[转载] 百科全说——潘怀宗:“认识”食品添加剂(10-10-19)
查看>>
第一行代码
查看>>
IntelliJ IDEA快捷键大全
查看>>