数论 —— 斐波那契数列(Fibonacci)

【概述】

斐波那契数列(Fibonacci sequence),又称黄金分割数列,其指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368....这个数列从第 3 项开始,每一项都等于前两项之和。

斐波那契数列除应用递推、递归定义解题外,还可用于改进二分查找——斐波那契数列查找。

关于斐波那契查找:点击这里

【特性】

  1. 奇数项求和:f_1+f_3+f_5+...+f_{2n-1}=f_{2n}-f_2+f_1
  2. 偶数项求和:f_2+f_4+f_6+...+f_{2n}=f_{2n+1}-f_1
  3. 平方求和:f_1^2+f_2^2+f_3^2+...+f_{n}^2=f_{n}*f_{n+1}
  4. 二倍项关系:f_{2n}/f_{n}=f_{n-1}+f_{n+1}
  5. 平方项与隔项:\left\{\begin{matrix}f_{n-1}f_{n+1}-f_n^2=(-1)^n \\ f_n^2-f_{n-1}f_{n+1}=(-1)^{n-1} \end{matrix}\right.
  6. 公约数:GCD(f[m],f[n])=f[GCD(m,n)]

【公式】

1.通项公式

2.递推公式

根据定义可知:F0=0,F1=1,F2=F1+F0=1,F3=F2+F1=2,F4=F3+F2=3,F5=F4+F3=5,……

int Fibonacci(int n)  
{  
    if (n<0)  
        return -1;  
    
    int n1=1,n2=2,n3=3;
    for (int i=3;i<=n;++i)  
    {  
        n3=n1+n2;  
        n1=n2;  
        n2=n3;  
    }  
    
    return n3;  
}  

3.递归公式

如果设 F(n)为该数列的第n项,那么斐波那契数列可以写成如下形式:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)

int fibonacci(int n)
{
    if (n == 1 || n == 2)// 递归终止条件
        return 1;// 简单情景
    return fibonacci(n-1)+fibonacci(n-2); // 相同重复逻辑,缩小问题的规模
}

【例题】

  1. 斐波那契数列(信息学奥赛一本通-T1201)(递归实现)点击这里
  2. 斐波那契数列(信息学奥赛一本通-T1188)(递推实现)点击这里
  3. 爬楼梯(信息学奥赛一本通-T1204)(推导+斐波那契数列)点击这里
  4. 一只小蜜蜂(HDU-2044)(推导+斐波那契数列)点击这里
  5. 骨牌铺方格(HDU-2046)(推导+斐波那契数列)点击这里
  6. 骨牌覆盖(51Nod-1031)(推导+斐波那契数列)点击这里
  7. 数楼梯(洛谷-P1255)(高精度+斐波那契数列)点击这里
  8. Anniversary(CF-226C)(矩阵快速幂构造斐波那契数列+斐波那契数列性质)点击这里
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值