精华内容
下载资源
问答
  • 斐波那契

    万次阅读 2021-03-08 19:10:03
    Keven 特别喜欢斐波那契数列,已知fib1=1, fib2=2,对于n≥3,fibn=fibn-2+fibn-1,并且他想知道斐波那契前n项平方和是多少?为了防止答案过大,请将最后的答案模1e9+7 输入描述: 第一行一个整数 n (1≤n≤1e18) ...

    Keven 特别喜欢斐波那契数列,已知fib1=1, fib2=2,对于n≥3,fibn=fibn-2+fibn-1,并且他想知道斐波那契前n项平方和是多少?为了防止答案过大,请将最后的答案模1e9+7

    输入描述:
    第一行一个整数 n (1≤n≤1e18)

    输出描述:
    在一行中输出斐波那契数列的前 n 项平方和模 1e9+7

    示例1
    输入
    5
    输出
    40

    说明
    12+12+22+32+52=40

    #include<cstdio>
    using namespace std;
    typedef long long ll;ll n;
    const ll mod=1000000007;
    char s[50000];
    struct matrix{ll s[2][2];}A,F;
    ll mul(ll a,ll b)
    {
        ll res=0;
        for(;b;b>>=1,a=(a+a)%mod) if(b&1) res=(res+a)%mod;
        return res;
    }
    matrix operator *(const matrix &a,const matrix &b)
    {
        matrix c;
        for(int i=0;i<2;i++)
            for(int j=0;j<2;j++)
    		{
                c.s[i][j]=0;
                for(int k=0;k<2;k++)
    			{
                    c.s[i][j]+=mul(a.s[i][k],b.s[k][j]);
                    c.s[i][j]%=mod;
                }
            }
        return c;
    }
    matrix fpow(matrix a,ll p)
    {
        matrix ans;
        for(int i=0;i<2;i++) for(int j=0;j<2;j++) ans.s[i][j]=(i==j);
        for(;p;p>>=1,a=a*a) if(p&1) ans=ans*a;
        return ans;
    }
    void deal()
    {
        for(int i=0;s[i];i++)
            n=(n*10+s[i]-'0')%(mod+1);
    }
    int main()
    {
        scanf("%s",s);deal();
        A.s[0][0]=A.s[0][1]=A.s[1][0]=1;A.s[1][1]=0;
        F.s[0][0]=1;F.s[0][1]=F.s[1][0]=F.s[1][1]=0;
        F=fpow(A,n)*F;
        ll ans=F.s[0][0]*F.s[1][0]%mod;
        printf("%lld\n",ans);
        return 0;
    }
    
    展开全文
  • 斐波那契数列的四种实现方式(C语言)

    万次阅读 多人点赞 2020-05-10 21:33:53
    斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列, 像这样的:1、1、2、3、5、8、13、21、34、55...... 今天,我们用四种方式来进行实现: 1.递归 int Fibon1(int n){ if...

    斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,

    像这样的:1、1、2、3、5、8、13、21、34、55......

    今天,我们用四种方式来进行实现:

    1.递归

    int Fibon1(int n){
        if (n == 1 || n == 2){
            return 1;
        } else{
            return Fibon1(n - 1) + Fibon1(n - 2);
        }
    }
    int main(){
        int n = 0;
        int ret = 0;
        scanf("%d", &n);
        ret = Fibon1(n);
        printf("ret=%d", ret);
        return 0;
    }


    2.非递归

    int Fibno2(int n){
        int num1 = 1;
        int num2 = 1;
        int tmp = 0;
        int i = 0;
        if (n < 3){
            return 1;
        }else{
            for (i = 0; i <= n-3; i++){
                tmp = num1 + num2;
                num1 = num2;
                num2 = tmp;
            }
            return tmp;
        }
    }


    3.数组

    public  int Fibno3(int n){
        List<int> list = new List<int>();
        list.fib(1);
        list.fib(1);
        int count = list.Count;
         while (count < n){
                    list.fib(list[count - 2] + list[count - 1]);
                     count = list.Count;
              }
             return list[count - 1];
         }
    }


    4.队列

    public int Fibno4(int n){
        Queue<int> queue = new Queue<int>();
        queue.Enqueue(1);
        queue.Enqueue(1);
        for (int i = 0; i <= n - 2; i++){
            queue.Enqueue(queue.AsQueryable().First() + queue.AsQueryable().Last());
            queue.Dequeue();
        }
         return queue.Peek();
    }


    运行结果:

    展开全文
  • 斐波那契-源码

    2021-02-16 09:45:51
    斐波那契
  • python中使用递归实现斐波那契数列

    万次阅读 2021-01-21 11:53:50
    python中使用递归实现斐波那契数列 python中使用递归实现斐波那契数列 先来了解一下 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子...

    python中使用递归实现斐波那契数列

    python中使用递归实现斐波那契数列

    先来了解一下

    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。*

    使用递归返回前n项的斐波那契数列:

    func_1(n-2)+func_1(n-1)此代码为本节代码的主要代码

    def func_1(n):
    if n == 0:
    return 0
    elif n == 1 or n == 2:
    return 1
    else:
    return func_1(n-2)+func_1(n-1)
    假设n取4
    return func_1(2)+func_1(3)
    func_1(2)带入函数则返回1,func_1(3)带入函数则返回 func_1(3-2)+func_1(3-1)即为 func_1(1)+func_1(2) ,带入函数为1+1 所以得出结论func_1(4) =func_1(2)+func_1(3)=func_1(2)+func_1(1)+func_1(2)=3


    刚才的递推函数只能返回第n各值,要想返回前n项值,得在外围建个函数将得出的值一一添加进去

    代码实现:
    def func(a):
    def func_1(n):
    if n == 0:
    return 0
    elif n == 1 or n == 2:
    return 1
    else:
    return func_1(n-2)+func_1(n-1)
    list_1 = []
    for i in range(a):
    list_1.append(func_1(i))
    return list_1

    print(func(20))
    在这里插入图片描述

    祝大家Python学习顺利!

    展开全文
  • 如何用python实现斐波那契数列的前100个 如何用python实现斐波那契数列的前100个 首先分析题目 实现斐波那契数列的前100个, 斐波那契数列是什么? 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家...

    如何用python实现斐波那契数列的前100个

    如何用python实现斐波那契数列的前100个
    首先分析题目
    实现斐波那契数列的前100个, 斐波那契数列是什么?
    斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:**

    0、1、1、2、3、5、8、13、21、34、……

    *在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N

    0,1,0+1,1+1,1+2,2+3,3+5,5+8,8+13,13+21……

    采用for循环 之后会用到序列解包
    0、1、 1、 2、 3、 5、 8、 13、 21、 34、……
    0,1,0+1,1+1,1+2,2+3,3+5,5+8,8+13,13+21……
    a、b、a+b
    b的值给了a, a+b的值给了b 不断循环一直打印a

    代码实现

    a = 0
    b = 1
    for i in range(100):
    print(a, end=’ ')
    a, b = b, a+b
    在这里插入图片描述

    祝大家Python学习顺利!

    展开全文
  • int f(unsigned int n) { if(n <= 1) { return 1; } return f(n-1) + f(n-2); }
  • 斐波那契数列

    万次阅读 2021-02-09 22:25:18
    写一个函数,输入n,求斐波那契数列(Fibonacci)的第n项, 如果采用下面自上而下写法,则效率是非常低的,因为会有很多重复的操作 long long Fabonacci(unsigned int n) { if(n<=0)return 0; if(n==1)...
  • 斐波那契数列的三种方法

    万次阅读 多人点赞 2018-07-05 21:49:00
    什么是斐波那契数列,1,1,2,3,5,8,13...这样一个数列就是斐波那契数列,求第n项的值。 一、经典求法 观察数列可得,除了第一项和第二项,所有的数列的值都是前一项和前一项的前一项的加和,转换成函数也就是f(n) =...
  • 斐波那契查找

    万次阅读 2020-10-09 09:03:45
    1. 构建获取斐波那契数列值的一个函数 function getFibonacciListValue (num) { if(num===0){ return 0 }else if(num===1){ return 1 }else{ return getFibonacciListValue(num-2) + getFibonacciListValue...
  • 斐波那契函数

    2015-07-13 07:22:41
    用C#实现斐波那契函数,斐波那契数列就是采用递归调用的函数。
  • 斐波那契计算器-源码

    2021-02-26 06:46:12
    斐波那契计算器

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,789
精华内容 15,115
关键字:

斐波那契