又是斐波那契数列

Posted liufei-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了又是斐波那契数列相关的知识,希望对你有一定的参考价值。

题目描述


在数学中斐波那契数列F是这样定义的:F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1。现在我有另外一个序列G,G(n)=G(n-1)+G(n-2),G(0)=1,G(1)=t(t>=1)。
 你的任务对于给定的i,G(i)和j输出G(j)。


输入


多组测试数据,对于每组测试数据包含三个正整数i,G(i),j。1 <= i,j <=20, G(i)<100000。


输出


对于每组数据,如果t存在输出对应的G(j)的值,否则输出-1。


样例输入

1 1 2
3 5 4
3 4 6
12 17801 19

样例输出

2
8
-1
516847
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int aa[21];
int fun(int a,int b,int c)  
{
    
    aa[0]=1;
    for(int i=1;i<=b;i++)  //外循环,遍历数组aa[1]=1~b的所有情况
    {
        aa[1]=i; 
        for(int j=2;j<=max(a,c);j++)  //由题意打表数组aa(在满足外循环的条件下的aa)
        {
            aa[j]=aa[j-1]+aa[j-2];
        }
        if(aa[a]==b)   //判断下面写了(个人感觉判断很核心)
        {
            return aa[c];
        }
    }
    return -1;
}
int main()
{
    int a,b,c;
    while(scanf("%d%d%d",&a,&b,&c)!=EOF)
    {
        cout<<fun(a,b,c)<<endl;
    }
    return 0;
}

 令a=i;b=g(i);c=j;

大概思路是:外循环:aa[1]的值从1~b,目的是遍历数组aa的所有情况,那为什么i<=b呢?由题目已知条件:g(1)=t,t>=1,所以g(i)>=i 

内循环:j<=max(a,c)是为了保证打表aa数组打完输入要求的值(emmmmm....)

!!判断:若aa[a]=b,即aa[i]=g(i),也就是我输入的a,b 刚好和我遍历的aa数组符合(也就是我们外循环做的事,一种种情况的去试),既然都符合了,那么输出对应的g(j)也没有问题了~

打表类型??

以上是关于又是斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章

Go语言 斐波那契数列的解法

python代码实现斐波那契数列数列

编写一递归函数求斐波那契数列的前40项

用JAVA表示斐波那契数列 急急急!!!!

python做斐波那契数列。

谁能帮我用JAVA编写一个斐波那契数列,用eclipse实现,代码不对不采纳!