微信扫一扫打赏支持

算法与数据结构---6.1、斐波那契数列-递推解法

算法与数据结构---6.1、斐波那契数列-递推解法

一、总结

一句话总结:

波那契数列递推的关系式F(n)=F(n-1)+F(n-2)已经有了,所以明确一下循环的边界条件,递推的代码就很好敲了
#include <iostream>
using namespace std;
const int mod=1000000007;
int f[200000];
int main(){
    int n;
    cin>>n;
    //1、确定初始值
    f[1]=f[2]=1;
    //2、循环做递推,3-n
    for(int i=3;i<=n;i++){
        //F(n)=F(n-1)+F(n-2)
        f[i]=(f[i-1]+f[i-2])%mod;
    }
    cout<<f[n]<<endl;
    return 0;
}

 

 

二、斐波那契数列

博客对应课程的视频位置:6.1、斐波那契数列-递推解法
https://www.fanrenyi.com/video/27/273

 

1、题目描述

问题描述:

满足F1=F2=1,F(n)=F(n-1)+F(n-2)的数列称为斐波那契数列(Fibonacci),
它的前若干项是1,1,2,3,5,8,13,21,34,55...,求此数列第n项 mod 10^9+7的值(n>=3)。

输入格式:
一行一个正整数n

输出格式:
一行一个整数表示答案。

输入输出样例:
输入5,输出5
输入10,输出55

【数据范围】
对于60%的数据,1<=n<=92;
对于100%的数据,1<=n<2^63。


题目位置:
P1962 斐波那契数列 - 洛谷 | 计算机科学教育新生态
https://www.luogu.com.cn/problem/P1962

 

2、递推解法

 1 /*
 2 
 3 递推关系式:
 4 题目中已经非常明显的给出了,就是
 5 F(n)=F(n-1)+F(n-2)
 6 
 7 解决递推问题的一般步骤
 8 1、建立递推关系式:F(n)=F(n-1)+F(n-2)
 9 2、确定边界条件:
10 f(1)=f(2)=1,
11 所以我们的循环可以从3开始,到n结束,
12 也就是3-n
13 
14 算法步骤:
15 1、确定初始值
16 2、循环做递推,3-n
17 
18 */
19 #include <iostream>
20 using namespace std;
21 const int mod=1000000007;
22 int f[200000];
23 int main(){
24     int n;
25     cin>>n;
26     //1、确定初始值
27     f[1]=f[2]=1;
28     //2、循环做递推,3-n
29     for(int i=3;i<=n;i++){
30         //F(n)=F(n-1)+F(n-2)
31         f[i]=(f[i-1]+f[i-2])%mod;
32     }
33     cout<<f[n]<<endl;
34     return 0;
35 }

 

 

 

 

 
posted @ 2020-06-08 10:19  范仁义  阅读(743)  评论(0编辑  收藏  举报