加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell 整理(36)===写斐波那契数列

发布时间:2020-12-15 16:12:57 所属栏目:安全 来源:网络整理
导读:(一)写如下所示数列 [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代码如下: #!/bin/bashaabbecho12|xargs-n1aaforiin`seq20`doa=`cataa|sed-n''$i'p'`b=`cataa|tail-1`echo$(($a+$b))aac=`cata

(一)写如下所示数列


[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代码如下:

#!/bin/bash

>aa
>bb
echo12|xargs-n1>aa

foriin`seq20`
do
a=`cataa|sed-n''$i'p'`
b=`cataa|tail-1`
echo$(($a+$b))>>aa
c=`cataa|sed-n''$(($i+1))'p'`
echo$c/$a>>bb
done
catbb


计算结果如下,用awk 计算

[root@localhostding1]#bash5.sh|awk-F'/''{a+=$1/$2;printa}'

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 代码如下:

#!/bin/bash

a=1#定义一个变量a和b
b=2

foriin`seq20`
do
echo$b/$a#shell解析的时候是从上往下一步步来的,所以顺序是非常重要的。
c=$((a+b))a=$b和b=$c不能颠倒过来
a=$b
b=$c
done

第一次循环:2/1c=3a=2b=3
第二次循环:3/2c=5a=3b=5
第三次循环:5/3c=8a=5b=8
........


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

例如:

1

2

3

5

8

........

shell 代码如下:

#!/bin/bash

a=1
b=2
echo1
foriin`seq20`
do
echo$b
c=$((a+b))
a=$b
b=$c
done


输出如下:

[root@localhost ding1]# bash 6.sh

1

2

3

5

8

13

21

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读