一道算法题求解!关于Fibonacci数

clipboard.png
求大神帮忙,我连题目都看不懂,不知道题目要求的结果到底是什么?

阅读 4.7k
8 个回答
样例输入:
3----共有三组测试数据,分别是1,3,5
1----第一组测试数据,输出Fibonacci数组第1个数
3----第一组测试数据,输出Fibonacci数组第3个数
5----第一组测试数据,输出Fibonacci数组第5个数

样例输出:
1----第一组测试数据结果:Fibonacci数组第1个数的值为1
2----第一组测试数据结果:Fibonacci数组第3个数的值为2
5----第一组测试数据结果:Fibonacci数组第5个数的值为5

题意就是这样

每一个数都是前两个数之和。。你哪里不理解?
或者百度菲波那切数列。

题意是,我假设你已经写好了获取Fibonacci数列的函数。

然后例子的输入是3,1,3,5,第一个3的意思是总共3组测试数据。然后后面的就是测试数据,要求你输出Fibonacci数列第一个,第三个,第五个数。

python3

>>> def fib(n):
    if n<0: return None
    if n<=1: return (0,1)[n]
    a,b = 0,1
    for i in range(n-1):
        a, b = b, a+b
    return b

>>> fib(9) # 第九个 Fibonacci 数
34
    斐波那契PHP实现
    function fibonacci($n){
        if($n == 1 || $n == 2)
            return 1;
        else
            return fibonacci($n - 1) + fibonacci($n - 2);
    }

其他的程序逻辑控制下就ok了

样例输入 样例输出
3 表示 后面有三个测试数据
1 返回第一个Fibonacc数 1 第一个Fibonacc数为1
3 返回第三个Fibonacc数 2 第三个Fibonacc数为2
5 返回第五个Fibnoacc数 5 第5个为5

其实就是计算第N个Fibnoacc数是多少的算法题。那个输入的第一个参数对于算法没啥具体意义。

这样子就简单了

def getB(n):

if n<=2:
    return 1
one=two=1
for i in range(3,n+1):
    two,one=one+two,two
return two
// 斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到
function fib($max){
    $n = 0;
    $a = 0;
    $b = 1;
    while ($n<$max) {
        echo $b."\t";
        $tmp_a = $a;
        $a = $b;
        $b = $tmp_a+$b;
        $n++;
    }

}
fib(8);
新手上路,请多包涵

int fib(int n)
{

int A1 =1,A2 =1;
int nTotal = 1;

if(n ==1||n==2)
    return 1;

for(int i = 3;i<=n;i++)
{
    nTotal = A1 + A2;
    A1 = A2;
    A2 = nTotal;
}

return nTotal;

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题