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

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.

斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

示例1:

输入:n = 2
输出:1

示例 2:

输入:n = 5
输出:5

提示:

  • 0 <= n <= 100

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/unique-paths-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

斐波那契数列想必大家都是耳熟能详,根据递推公式,我们可以很容易想到递归的方法,直接上代码

具体实现代码如下:

class Solution {public int fib(int n) {if (n == 0) {return 0;} else if (n == 1) {return 1;} else {return fib(n - 1) + fib(n - 2);}}
}

但是这样有个明显的问题(不管你对不对1000000007取余,它都会超时)。所以我们就要转变思路,既然递归不行,那我们就使用动态规划。创建一个包含三个元素的一维数组dpdp[0]存放fib(n-1)dp[1]存放fib(n-2)dp[3]存放fib(n-1)+fib(n-2),这样,我们就可以通过循环来算出斐波那契数列第n项的值。

具体代码如下:

class Solution {public int fib(int n) {if (n < 2) {return n;}int[] dp = new int[]{0, 0, 0};dp[0] = 0;dp[1] = 1;for (int i = 2; i <= n; i++) {dp[2] = (dp[0] + dp[1]) % 1000000007;dp[0] = dp[1];dp[1] = dp[2];}return dp[2];}
}

用循环实现斐波那契数列_剑指 Offer 10- I. 斐波那契数列相关推荐

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

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

  2. 菲波那切数列(剑指offer)---c语言

    剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F ...

  3. 【剑指offer】10A--求裴波那切数列的第n项,C++实现

    #本文是牛客网<剑指offer>刷题笔记 1.题目 写入一个函数,输入n,输出裴波那切数列的第n项 2.思路 递归--时间和空间复杂度高 循环--时间和空间复杂度低,通过循环迭代计算第n项 ...

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

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

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

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

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

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

  7. 斐波那契数列(剑指offer 10-I)

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

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

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

  9. 剑指offer Q10 -I 斐波那契数列

    思路 本题看起来是简单题,但是实际上对性能和结果都有要求 直接使用递归写法性能上是不能通过的.只能使用迭代写法,通过两个变量re1和re2来保存前一步和前前一步的结果,最后返回re2即可.但是注意,本 ...

最新文章

  1. ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete
  2. JavaDoc注释的使用
  3. C++中友元函数和友元类
  4. LinkedHashMap源码分析
  5. 设置弹性框项目之间距离的更好方法
  6. Binary Tree Nodes(单表多实例查询)
  7. 用CMD开启Windows下的服务命令 转载
  8. C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
  9. 如何使用SAP C4C Repository Explorer里的BO test shell
  10. 基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
  11. 计算机组装与维修单招,单招职二 计算机组装与维修试卷.doc
  12. GraphQL:现代数据库管理系统的演变
  13. Python itertools chain
  14. 七. 多线程编程11.线程的挂起、恢复和终止
  15. python可以给你干什么-python可以做什么,你心动了吗?
  16. 一个java文件里可以有多个类嘛?
  17. 用HTML语言编写一个课程表,html做课程表
  18. SQL 完整的实体性—联系图
  19. AutoSF- Searching Scoring Functions for Knowledge Graph Embedding
  20. 详细介绍idm下载以及配置,实现百度网盘急速下载不是梦,适合新手

热门文章

  1. U盘文件被病毒隐藏不显示
  2. 【项目设计】基于HLW8110计量芯片的电量计设计
  3. 西门子840d备份到u盘_西门子840D系统的备份新方法
  4. C/C++经典项目:C++编写彩票号码生成器,附源码
  5. 【BP预测】基于头脑风暴算法优化BP神经网络实现数据预测附matlab代码
  6. 插入排序(python)
  7. 大数据测试(一)大数据离线数据构造
  8. linux自动创建分区,shell编程 自动创建分区
  9. rm命令 – 删除文件或目录
  10. 忘了微信密码怎么办_我的微信忘记密码怎么找回