一直写不出来,想问一下各位是怎么写的

编写一个脚本fib.sh,实现递归版的斐波那契函数,输入一个数后能够正确输出。

img

  • 以下回答由chatgpt基于相关博客总结生成:

    问题解答:

    对于使用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"