编写一个脚本fib.sh,实现递归版的斐波那契函数,输入一个数后能够正确输出。
问题解答:
对于使用Shell编写递归版斐波那契函数脚本fib.sh,如何输入一个数后才能够正确输出结果?具体步骤如下:
1.创建fib.sh脚本文件并使用chmod +x命令添加可执行权限。
2.在脚本中使用命令行参数获取输入的数值,并传参给递归函数,实现斐波那契数列计算。代码示例如下:
#!/bin/bash
# 接收命令行参数
n=$1
# 定义递归函数
function fib(){
local n=$1
if [ $n -eq 0 ]; then
echo 0
elif [ $n -eq 1 ]; then
echo 1
else
local a=`fib $((n-1))`
local b=`fib $((n-2))`
echo $((a+b))
fi
}
# 输出结果
echo `fib $n`
以上代码中,首先使用命令行参数获取输入的数值n,然后定义一个名为fib的递归函数,函数中使用if-else语句实现斐波那契数列的计算。最后,使用echo命令输出计算结果。
3.通过终端进入fib.sh脚本文件所在的目录(使用cd命令),执行./fib.sh加空格加数字的方式运行脚本,例如:
./fib.sh 10
以上命令将计算斐波那契数列的第10个数,并输出结果。
#!/bin/bash
function fib() {
if [ $1 -eq 0 ]; then
echo 0
elif [ $1 -eq 1 ]; then
echo 1
else
echo $(( $(fib $(( $1 - 1 ))) + $(fib $(( $1 - 2 ))) ))
fi
}
echo "请输入一个整数:"
read n
result=$(fib $n)
echo "斐波那契数列的第 $n 项为:$result"