算法与数据结构---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 }
版权申明:欢迎转载,但请注明出处
一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。
在校每年国奖、每年专业第一,加拿大留学,先后工作于华东师范大学和香港教育大学。
2024-10-30:27岁,宅加太忙,特此在网上找女朋友,坐标上海,非诚勿扰,vx:fan404006308
AI交流资料群:753014672