很简单的一个算法应用
expr命令格式:expr 表达式
1、用空格隔开每一项
2、用反斜杠放在shell特定的字符前面(发现表达式运行错误时,可以试试转义)
3、对包含空格和其他特殊字符的字符串要用引号括起来
4、expr会在stdout中输出结果。如果为逻辑关系表达式,则结果为真,stdout为1,否则为0
5、expr的exit code:如果为逻辑关系表达式,则结果为真,exit code为0,否则为1
该文件从stdin(标准输入)中读取一个整数n
在stdout(标准输出)输出斐波那契数列的第n项。即a[0] = 1, a[1] = 1, a[i] = a[i - 1] + a[i - 2], 求a[n]。
数据保证 0 <= n <= 20,脚本不需要判断n的合法性
#! /bin/bash
read n
a[0]=1
a[1]=1
for ((i = 2; i <= n; i ++ ))
do
x=$(expr $i - 1) #x=a[1]
y=$(expr $i - 2) #y=a[0]
a[$i]=$(expr ${a[$x]} + ${a[$y]}) #a[n]=a[n-1]+a[n-2]
done
echo ${a[$n]} #输出结果