用循环实现斐波那契数列_剑指 Offer 10- I. 斐波那契数列
剑指 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取余,它都会超时)。所以我们就要转变思路,既然递归不行,那我们就使用动态规划。创建一个包含三个元素的一维数组dp
,dp[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. 斐波那契数列相关推荐
- 循环斐波那契数列_剑指offer #10 斐波那契数列
(递归和循环)#10 斐波那契数列 一.斐波那契数列 定义: n = 0 , f(n) = 0 n = 1 , f(n) = 1 n > 1 , f(n) = f(n-1) + f(n-2) 思 ...
- 菲波那切数列(剑指offer)---c语言
剑指 Offer 10- I. 斐波那契数列 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F ...
- 【剑指offer】10A--求裴波那切数列的第n项,C++实现
#本文是牛客网<剑指offer>刷题笔记 1.题目 写入一个函数,输入n,输出裴波那切数列的第n项 2.思路 递归--时间和空间复杂度高 循环--时间和空间复杂度低,通过循环迭代计算第n项 ...
- c语言斐波那契数列_剑指Offer-10-I.斐波那契数列
题目 题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项.斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - ...
- python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
Q10.斐波那契数列 题目描述 写一个函数,输入n,求斐波那契数列的第n项. 解题思路 思路一 递归 递归很简单但是并不能AC python实现代码 class Solution: def Fibon ...
- 剑指offer——10.斐波那契数列
题目: 题1:现在要求输入一个整数n,请你输出斐波那契数列的第n项. 题2:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 题3:一只青蛙一次可以跳上1级台 ...
- 斐波那契数列(剑指offer 10-I)
一.题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1 ...
- 斐波那契数列——《剑指offer》
题目描述 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N)).斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) ...
- 剑指offer Q10 -I 斐波那契数列
思路 本题看起来是简单题,但是实际上对性能和结果都有要求 直接使用递归写法性能上是不能通过的.只能使用迭代写法,通过两个变量re1和re2来保存前一步和前前一步的结果,最后返回re2即可.但是注意,本 ...
最新文章
- ceph中使用ceph-objectstore-tool将pg从incomplete标记为complete
- JavaDoc注释的使用
- C++中友元函数和友元类
- LinkedHashMap源码分析
- 设置弹性框项目之间距离的更好方法
- Binary Tree Nodes(单表多实例查询)
- 用CMD开启Windows下的服务命令 转载
- C专家编程—分析signal函数的原型声明{void (*signal(int sig,void (*func)(int)))(int)}(2)
- 如何使用SAP C4C Repository Explorer里的BO test shell
- 基于文本知识库的强化学习技术——Learning to Win by Reading Manuals in a Monte-Carlo Framework
- 计算机组装与维修单招,单招职二 计算机组装与维修试卷.doc
- GraphQL:现代数据库管理系统的演变
- Python itertools chain
- 七. 多线程编程11.线程的挂起、恢复和终止
- python可以给你干什么-python可以做什么,你心动了吗?
- 一个java文件里可以有多个类嘛?
- 用HTML语言编写一个课程表,html做课程表
- SQL 完整的实体性—联系图
- AutoSF- Searching Scoring Functions for Knowledge Graph Embedding
- 详细介绍idm下载以及配置,实现百度网盘急速下载不是梦,适合新手