如题:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。

这道题基本上学过算法的人都直到,斐波那契数列即,即1,1,2,3,5.......

用数学公式描述即 f(n) = f(n-1) + f(n-2),很多教科书上都提供了递归算法,虽然,能够满足,但是效率是在太低了,存在大量重复计算,比如,计算f(5)的时候,需要计算f(4)和f(3),计算f(6)的时候,需要计算f(4)和f(5),显然,f(4)和f(5)重复计算了,随着n的增大,重复计算量越来越多。

为了减少重复计算量,此题最好的方式是使用循环法,不仅仅是此题,平常运用递归求解问题的时候,也要注意是否存在重复计算,如果存在的话,则需使用循环法求解。再循环体中保存前一步得到的值即可。思想上有点类似dp动态规划。

此题变种有很多,例如,青蛙跳台阶,仔细分析,本质上也是求斐波那契数列问题。

本题的c++解法如下:

//f(n) = f(n-1) + f(n-2);
class Solution {
public:int Fibonacci(int n) {int i = 3, v1 = 1, v2 = 1, val;//特殊情况处理if (n < 1)return 0;if (n < 3)return 1;//循环求解,保存上一步得到的值while (i <= n){val = v1 + v2;v1 = v2;v2 = val;i++;}return val;}
};

=============================================================================================

Linux应用程序、内核、驱动、后台开发交流讨论群(745510310),感兴趣的同学可以加群讨论、交流、资料查找等,前进的道路上,你不是一个人奥^_^。

《剑指offer》c++版本 10. 斐波那契数列相关推荐

  1. 剑指Offer - 面试题10- I. 斐波那契数列

    文章目录 1. 题目 2. DP解题 3. 面试题 08.01. 三步问题 4. LeetCode 509. 斐波那契数 1. 题目 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 ...

  2. python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法

    Q10.斐波那契数列 题目描述 写一个函数,输入n,求斐波那契数列的第n项. 解题思路 思路一 递归 递归很简单但是并不能AC python实现代码 class Solution: def Fibon ...

  3. 剑指offer(7)斐波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 题目分析 我们都知道斐波那契可以用递归,但是递归重复计算的部分太多了(虽然可以通过),但是这 ...

  4. 剑指offer面试题10- I. 斐波那契数列

    题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: 思路 详见链接 代码 class Solution:def fib(self,n:int) ...

  5. 剑指offer面试题[9]-裴波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 分析: 虽然在学递归函数时,会用斐波那契数列作为例子,但这并不能说明递归的解法最合适这个题目 ...

  6. 【剑指offer-Java版】09斐波那契数列

    斐波那契数:比较简单,但是重点是讲效率的求解出来 简单的使用两个临时变量大大减少了重复计算 对于非常大的数如果使用long 来表示,那么 第100项左右就会发生溢出 换了BigInteger,理论上是 ...

  7. 循环斐波那契数列_剑指offer #10 斐波那契数列

    (递归和循环)#10 斐波那契数列 一.斐波那契数列 定义: n = 0 , f(n) = 0 n = 1 , f(n) = 1 n > 1 , f(n) = f(n-1) + f(n-2) 思 ...

  8. 剑指offer——10.斐波那契数列

    题目: 题1:现在要求输入一个整数n,请你输出斐波那契数列的第n项. 题2:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题3:一只青蛙一次可以跳上1级台 ...

  9. 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列

    契波那契数列最常见的解法,递归如下: public class Solution {public int Fibonacci(int n) {if(n == 0)return 0;else if(n ...

最新文章

  1. 152. 城市游戏【单调栈】
  2. 「读懂源码系列2」我从 lodash 源码中学到的几个知识点
  3. docker 其他电脑访问权限_docker – 从远程计算机连接到容器
  4. 今晚8点,Oracle ACE男神Roger详解Oracle中为什么没有double write?
  5. C语言访问存储器的方法
  6. elasticsearch修改配置文件后启动报错:Caused by: expected 'document start‘', but found BlockMappingStart
  7. 五、Matlab 画图——万能的plot函数
  8. android root大师,安卓Root成难题?ROOT大师帮你一键Root
  9. 西门子PS2阀门定位器在调试中常见问题
  10. talking web android,talking web(网页朗读插件) 免费版
  11. 小米6-谷歌全家桶安装
  12. eclipse的jsp第一行代码报错_Eclipse手记(小弟发现最实用的资料之一)-JSP教程,Java技巧及代码...
  13. 弘辽科技:淘宝销量数据从哪查?销量怎么提升?
  14. 【小狐狸 - 横版游戏开发】1.编辑素材 Til
  15. java面试题(一)Java面试问题集
  16. 正则匹配以什么开头、以什么结尾,以非什么开头,以非什么结尾
  17. 桌面计算机未响应怎么办,电脑桌面卡死任务管理器打不开怎么办
  18. [059量化交易]python对上市公司股票按价格升序排列
  19. 西门子HMI使用全局区域指针画面号实现画面跳转
  20. Element-ui 路由导航

热门文章

  1. FileUpload控件实现单按钮图片自动上传并带预览显示
  2. jQuery Mobile 图标无法显示
  3. minst0-9对应81-30-3的特征频率曲线
  4. 实验数据:将甲醛和亚硝酸的模拟分子网络分别计算100次的结果
  5. python+opencv获取最小外接矩形
  6. 3.11 TensorFlow-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  7. 3.3 超参数训练实战:Pandas vs. Caviar-深度学习第二课《改善深层神经网络》-Stanford吴恩达教授
  8. 玩转Mixly – 9、Arduino AVR编程 之 函数
  9. stm32 标准库一些比较容易犯的错误
  10. 少儿编程教会孩子如何思考,重视孩子的素质提升