目录

  • 题目
  • 解题思路
  • 具体代码

题目

题目链接
剑指offer:斐波那契数列
题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

解题思路

斐波那契数列属于经典的递归问题,对于这题的求解,我们首先要知道斐波那契数列的状态转移式,即f[n]=f[n-1]+f[n-2],且在n=1或2时,f[n]=1。
在理解基础的状态转移式后,最容易想到的便是递归调用,但很遗憾,这样算法的时间复杂度往往达不到要求。
仔细观察后可以发现,每次求解的f[n]都在之后两个f[n]的求解中起作用,因此我们可以将其保存,这样能够避免重复计算,降低算法的时间复杂度;同时,因为只在后续两个f[n]的求解中起作用,因此只需要保存两个f[n]的值即可。

具体代码

class Solution {
public:int Fibonacci(int n) {if (n < 0)return -1;if (n <= 1)return n;int sum = 1;    // f[n-1]int pre = 0;    // f[n-2]for (int i = 2; i <= n; ++i) {// 更新f[n-1]和f[n-2]sum = sum + pre;pre = sum - pre;}return sum;}
};

转载于:https://www.cnblogs.com/Bylight/p/10628008.html

剑指offer:斐波那契数列相关推荐

  1. [剑指Offer]斐波那契数列、跳台阶、兔子数量问题(递归、非递归)(Java)

    剑指Offer题目 斐波那契数列 题目描述 [剑指Offer 7]大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). [剑指Offer 8]一只青蛙 ...

  2. 剑指Offer——斐波那契数列

    1.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2.代码实现 1 package com.baozi.offer; ...

  3. 剑指Offer 斐波那契数列

    时间限制:1秒 空间限制:32768K 热度指数:332130 算法知识视频讲解 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 给出代码: ...

  4. c语言斐波那契数列_剑指Offer-10-I.斐波那契数列

    题目 题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - ...

  5. 剑指Offer_07_斐波那契数列

    题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39. 解题思路 利用递归求解,动态规划保存已求值的结果,提高效率. 利用循环,每次根据保存和前两 ...

  6. 2021-09-22剑指offer07.斐波那契数列

    对于 < 2的数字,直接返回其本身即可. 对于 >=2的数字,取0,0,1作为循环开始最初的数字,每次循环得到的数字分别为1,2,3,5 因此每个数字循环的次数为当前的数字-1.

  7. 剑指offer 菲波那切数列

    大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 解决方案,递归和迭代: public class Solution {public int Fibon ...

  8. Python中斐波那契数列的四种写法

    在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,"你学过数据结构吗?&qu ...

  9. 【每日一题】剑指 Offer 10- I. 斐波那契数列

    剑指 Offer 10- I. 斐波那契数列

  10. 7、斐波那契数列、跳台阶、变态跳台阶、矩形覆盖------------剑指offer系列

    题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offe ...

最新文章

  1. 姚期智云栖大会首日演讲:为什么我说现在是金融科技的“新”黄金时代
  2. js如何去除多个cookie?
  3. linux查找文件里面的内容
  4. linux 切换用户_Linux 用户态切换到内核态的 3 种方式
  5. javascript理论篇(详情见地址)
  6. 【学习 OpenCV】—— 色彩空间(RGB、HSV、rgb2hsv、rgb2gray 的实现)
  7. Leetcode Merge Sorted Array
  8. vista iis7上安装php4.4.7
  9. 工作流集成表单的过程
  10. x64技术之SSDT_Hook
  11. 基于React+antd的后台管理模板(可预览)
  12. STM32F103C6T6初步学习
  13. vue+elementui上传视频并回显
  14. CF大陆斗C战士(二)
  15. 中石油 : 炸弹安放
  16. 农夫过河算法最简便的c语言,C语言农夫过河
  17. 【Windows下设置全局以管理员身份运行cmd】
  18. 教资综合素质 (笔记一)
  19. 基于单片机红外遥控LED控制灯亮灭设计毕设课设资料
  20. vue动态组件的实现和传值

热门文章

  1. MySQL学习之路 一 : MySQL 5.7.19 源码安装
  2. LeetCode数据库 180. 连续出现的数字
  3. python替换缺失值,处理空值+生成图形+图形标准化
  4. java 变量与常量_java变量和常量的区别是什么
  5. paste linux 相同字符,Linux命令之字符串处理命令paste命令使用实例
  6. 数组中某个元素相同的去重_JAvaScript:JS数组元素去重的方法
  7. agx 安装ros opencv_Ubuntu下安装realsense+melodic+OpenCV
  8. Selenium自动化测试-JavaScript定位
  9. 萌新的Python练习菜鸟100例(十一)生兔子练习
  10. A股开盘:深证区块链50指数跌0.32%,118只概念股下跌