首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本中的递归Fibonacci

Bash脚本中的递归Fibonacci
EN

Stack Overflow用户
提问于 2013-06-17 02:46:14
回答 5查看 8.3K关注 0票数 1

这是我的尝试:

代码语言:javascript
复制
#!/bin/bash

function fibonacci(){

first=$1
second=$2

if (( first <= second ))
then
return 1

else 

return $(fibonacci $((first-1)) ) + $(fibonacci $((second-2)) )
fi
}

echo $(fibonacci 2 0)

我想我在使用else语句时遇到了问题。我在第14行得到了错误return: +: numeric argument required

我遇到的另一个问题是,即使我使用echo $(fibonacci 0 2),脚本也不会显示任何数字。我想它会显示一个1,因为在这种情况下我会返回一个1。有人能给我一些如何做到这一点的小贴士吗?

在检查了你的一些答案之后,这是我的第二次尝试..它工作正常,除了它以1+1+1+1等形式显示第n个斐波那契数字。

代码语言:javascript
复制
#!/bin/bash

function fibonacci(){

first=$1
second=$2

if (( first <= second ))
then
echo 1


else 

echo $(fibonacci $((first-1)) ) + $(fibonacci $((first-2)) )
fi
}

val=$(fibonacci 3 0)
echo $val

我最后一次尝试:

代码语言:javascript
复制
#!/bin/bash

function fibonacci(){

first=$1

if (( first <= 0 ))
then
echo 1


else 

echo $(( $(fibonacci $((first-1)) ) + $(fibonacci $((first-2)) ) ))
fi
}

val=$(fibonacci 5)
echo $val

谢谢伙计们。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-06-17 03:09:58

正如沃姆帕斯所说,您需要使用例如echo来生成输出。但是,您还需要修复递归调用。最外面的操作是一个加法,也就是你想要的:

代码语言:javascript
复制
echo $(( a + b ))

ab都是fibonacci的替代,所以

代码语言:javascript
复制
echo $(( $(fibonacci x) + $(fibonacci y) ))

xy依次是算术表达式,因此每个表达式都需要自己的$(( )),如下所示:

代码语言:javascript
复制
echo $(( $(fibonacci $((first-1)) ) + $(fibonacci $((second-2)) ) ))

如果您对此感到困惑,则应将组件放入临时变量中,并将表达式分解为多个部分。

至于实际的斐波纳契数,不清楚为什么要传递2个参数。

票数 1
EN

Stack Overflow用户

发布于 2014-04-04 15:19:37

代码语言:javascript
复制
#!/bin/bash

function fib(){
    if [ $1 -le 0 ]; then
        echo 0
    elif [ $1 -eq 1 ]; then
        echo 1
    else
        echo $[`fib $[$1-2]` + `fib $[$1 - 1]` ]
    fi

}

fib $1
票数 5
EN

Stack Overflow用户

发布于 2013-06-17 02:50:51

$(...)替换运算符将替换为命令的输出。您的函数不产生任何输出,所以$(...)是空字符串。

函数的返回值进入$?,就像外部命令的退出代码一样。

因此,您需要生成一些输出(使函数回显其结果,而不是返回结果),或者在每次调用后使用$?来获取值。我会选择回声。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17136505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档