【C/C++】斐波那契数列数列系列问题详解 您所在的位置:网站首页 33000000大写 【C/C++】斐波那契数列数列系列问题详解

【C/C++】斐波那契数列数列系列问题详解

2023-10-28 17:25| 来源: 网络整理| 查看: 265

🍎 博客主页:🌙@披星戴月的贾维斯 🍎 欢迎关注:👍点赞🍃收藏🔥留言 🍇系列专栏:🌙 C++初阶 🌙励志卓越可以成为你努力的动力,追求完美却只会让你身心俱疲。🌙 🍉一起加油,去追寻、去成为更好的自己!

  斐波那契数列数列是我们学习递归的入门问题,是一种非常经典的题型,也衍生出了一些更复杂的题型,这一节就让我们彻底理解斐波那契数列系列问题。

在这里插入图片描述

文章目录 🍎、概念介绍🍎、斐波那契数列系列问题详解🍎、总结和思考

提示:以下是本篇文章正文内容,下面案例可供参考

🍎、概念介绍

🍉、什么是斐波那契数列?

  斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列: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

🍉、怎么定义斐波那契数列

斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89… 递推公式 斐波那契数列:1,1,2,3,5,8,13,21,34,55,89… 斐波纳契数列以如下被以递归的方法定义: f[0] = 0, f[1] = 1;f[n] = f[n -1] + f[n - 2](n >= 2) 这个数列从第三项开始,每一项都等于前两项之和。 显然这是一个线性递推数列。

🍎、斐波那契数列系列问题详解

🍇最入门的斐波那契数列问题 在这里插入图片描述 分析题意:是最基本的斐波那契数列问题,问的就是第n个斐波那契数列的值是多少并且输出出来。 根据我们的递推方程 : f[0] = 0, f[1] = 1;f[n] = f[n -1] + f[n - 2](n >= 2)即可求出

🔥递归示意图:🔥 在这里插入图片描述 🔥最原始的递归代码示例:

#include using namespace std; const int N = 100010; int fbnq(int n) { if (n == 1 || n == 2) return 1; if(n > 2) return (fbnq(n - 1) + fbnq(n - 2)); } int main () { int n; cin >> n; cout n; cout n) { if (n < 29) { printf("%d\n", a[n]); } else { printf("%06d\n", a[n]); } } return 0; }

🍇牛客网: 星际密码 难度:较难 在这里插入图片描述 分析题意:我为什么觉得这道题较难,就是因为本题题意比较难理解。矩阵运算和斐波那契数列结合了起来 在这里插入图片描述 🔥所以这道题的解法就是初始化斐波那契数列,每次获取对应数据,打印后4位即可。 🔥代码示例:

#include #include using namespace std; int main () { vector v = {1, 1};//初始化vector for(int i = 2;i < 10001; i++) { v.push_back((v[i - 1] + v[i -2]) % 10000);//取最后四位 } int n; while(cin >>n) { int x = 0; for(int i = 0; i < n; i++) { cin >> x; printf("%04d", v[x]); } printf("\n"); } return 0; }

本题小结:有时候不是因为这道题涉及的算法难,而是你看不懂这道题涉及的算法是啥,而且许多边界我们也是需要控制的,所以这就需要我们多刷题,才能更快,更准地读懂题意。

🍎、总结和思考

在这里插入图片描述   本文介绍了一下斐波那契数列概念,以及其定义方式,也通过三个斐波那契数列问题,来帮助大家来了解斐波那契数列问题的解法,解决斐波那契数列问题的关键就是要理解其递归过程,知道它的递归方程式,然后如果难一点的斐波那契数列问题就要考虑取模,希望大家读后能够有所收获!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有