《剑指offer》-斐波那契数列】的更多相关文章

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 思路: 不考虑递归 用递推的思路 AC代码: class Solution { public: int Fibonacci(int n) { ) ; int fn1,fn2,fn; fn1=fn2=; ||n==) ; ;i<n;i++) { fn=fn1+fn2; fn1=fn2; fn2=fn; } return fn; } };…
题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 分析: 递归解法肯定相当耗时. 因为当n=4时,程序是这样子递归运算的:Fibonacci(4) = Fibonacci(3) + Fibonacci(2); = Fibonacci(2) + Fibonacci(1) + Fibonacci(1) + Fibonacci(0); = Fibonacci(1) + Fibonacci(0) + Fibonacci(1) + Fibonacci(1…
牛客网链接 下面介绍一下什么是斐波那契数列 js代码 知道了通项公式,那代码就非常简单了 function Fibonacci(n) { // write code here let pre = 1 let back = 1 let now if (n === 0) return 0 if (n ===1 || n ===2) return 1 for (let i = 3; i <= n; i++){ now = pre + back pre = back back = now } retur…
跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) { ) ; ) ; ; ; ; ; i <= number; i++) { rtn = n1 + n2; n1 = n2; n2 = rtn; } return rtn; } }; 变态跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种…
1. 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 2. 思路和方法 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1.1.2.3.5.8.13.21.34.……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1…
int最大范围(有符号情况下,从第0项0开始)能取到第46项1836311903,47项溢出 时间限制:1秒 空间限制:32768K 热度指数:473928 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 class Solution { public: int Fibonacci(int n) { ) ; ,b = ; ; i<=n;i++) { int tmp = b; b += a; a = tmp; } ret…
题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 分析: 斐波那契数列是0,1,1,2,3,5,8,13...也就是当前的数字是前两个数字之和. 题目很简单求出斐波那契数列第n项. 程序: C++ class Solution { public: int Fibonacci(int n) { ) ; ) ; ; ; ; ; i <= n; ++i){ temp = sNum; sNum = fNum + sNum; fN…
/************************************************************************* > File Name: 07_Fibonacci.c > Author: Juntaran > Mail: JuntaranMail@gmail.com > Created Time: 2016年08月29日 星期一 20时23分54秒 ************************************************…
题解 使用循环,时间复杂度O(n). 相关 跳台阶:f(n)=f(n-1)+f(n-2) 变态跳台阶:f(n)=2*f(n-1) 矩形覆盖:f(n)=f(n-1)+f(n-2) 全部用循环代替递归,使时间复杂度为O(n). 代码 public class Solution { public int Fibonacci(int n) { if(n==0){return 0;} if(n==1){return 1;} if(n==2){return 1;} int preNum1=1,preNum2…
package solution; public class Fibonacci { /* * f(n) = f(n-1) + f(n-2) n>1 * f(0) = 0 * f(1) = 1 * */ public static void main(String[] args) { System.out.println(Fibonacci(3)); } public static int Fibonacci(int n) { if (n == 0 || n == 1) { return n;…
面试题9:斐波那契数列及其变形(跳台阶.矩形覆盖) 提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160 参与人数:7267  时间限制:1秒  空间限制:32768K 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项 Fibonacci(int n). 分析: 用递归会TLE,因为有不少地方进行了重复计算,改为循环即可解决(迭代法…
本题来自<剑指offer> 斐波那契数列 矩阵覆盖 题目一: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).n<=39 思路: 递归方式:return n<=0 ? 0 : n+fib(n-1) 递归是由于函数调用自身,有时间和空间的消耗,每次自身的调用都需要在内存栈中分配空间以保存参数,返回地址和变量,而且栈中压入和弹出数据都需要时间,效率不高,如果数据过大,会导致栈内存溢出.但是代码简洁. 循环方式:O(n)时间内的操作…
题目:写一个函数,输入n,求斐波那契数列的第n项. package Solution; /** * 剑指offer面试题9:斐波那契数列 * 题目:写一个函数,输入n,求斐波那契数列的第n项. * 0, n=1 * 斐波那契数列定义如下:f(n)= 1, n=2 * f(n-1)+f(n-2), n>2 * @author GL * */ public class No9Fibonacci { public static void main(String[] args) { System.out…
 本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. 思路 如果直接写递归函数,由于会出现很多重复计算,效率非常底,不采用. 要避免重复计算,采用从下往上计算,可以把计算过了的保存起来,下次要计算时就不必重复计算了:先由f(0)和f(1)计算f(2),再由f(1)和f(2)计算f(3)……以此类推就行了,计算第n个时,只要保存第n-1和第n-2项就可以了.…
目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:斐波那契数列 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 解题思路 斐波那契数列属于经典的递归问题,对于这题的求解,我们首先要知道斐波那契数列的状态转移式,即f[n]=f[n-1]+f[n-2],且在n=1或2时,f[n]=1. 在理解基础的状态转移式后,最容易想到的便是递归调用,但很遗憾,这样算法的时间复杂度往往达不到要求. 仔细观察后可以发现,每次…
剑指Offer - 九度1387 - 斐波那契数列2013-11-24 03:08 题目描述: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.斐波那契数列的定义如下: 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=70). 输出: 对应每个测试案例, 输出第n项斐波那契数列的值. 样例输入: 3 样例输出: 2 题意分析: 斐波那契数列的定义: f[1] = 1, f[2] = 1 f[n] = f[n - 1] + f[…
题目:斐波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). f(n) = f(n-1) + f(n-2) 基本思路 这道题在剑指offer中实际是当作递归的反例来说的. 递归的本质是吧一个问题分解成两个或者多个小问题,如果多个小问题存在互相重叠的情况,那么就存在重复计算. f(n) = f(n-1) + f(n-2) 这种拆分使用递归是典型的存在重叠的情况,所以会造成非常多的重复计算. 另外,每一次函数调用爱内存中都需要分配空间,每…
该题目来源于牛客网<剑指offer>专题. 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0) n<=39 Go语言实现: 递归: func fib(N int) int { if N == 0 { return 0 } if N == 1 { return 1 } return fib(N-1) + fib(N-2) } 迭代: func fib(N int) int { if N == 0 { return 0 } if N == 1…
斐波那契数列 牛客网 剑指Offer 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 class Solution: def Fibonacci(self, n): if n <= 0: return 0 if n == 1: return 1 i = 2 f_1 = 0 f_2 = 1 ret = None while i<=n: ret = f_1 + f_2 f_1 = f_2 f_2 = ret i +…
题目 剑指 Offer 10- I. 斐波那契数列 思路1(递归 / 自顶向下) 这题是很常见的一道入门递归题,可以采用自顶向下的递归方法,比如我们要求第n个位置的值,根据斐波那契数列的定义fib(n) = fib(n-1) + fib(n-2),即等于前一个和前前一个两个的值之和 但是如果直接递归,会导致很多重复的计算,效率很低,比如 n 为 5 时: fib(5) 为 fib(4) 和 fib(3) 两个值之和 然后 fib(4) 又等于 fib(3) 和 fib(2) 两个值之和.注意,…
斐波拉契数列是指这样一个数列: F(1)=1; F(2)=1; F(n)=F(n-1)+F(n); public class Solution { public int Fibonacci(int n) { int preNum = 1; int prePreNum = 0; int result = 0; if(n ==0){ return 0; } if(n == 1){ return 1; } for(int i = 2; i <= n; i ++){ result = preNum +…
面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值.f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列. 考点:考察对递归和循环的选择.使用递归的代码通常比循环简洁,但使用递归时要注意一下几点:1.函数调用的时间和空间消耗:2.递归中的重复计算:3.最严重的栈溢出.根据斐波那契数列递归形式定义很容易直接将代码写成递归,而这种方式有大量重复计算,效率很低. 解法比较: 解法3,4将问题数学化,借助数学工具的推导,从根本上减低时…
一.题目:斐波那契数列 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项.斐波那契数列的定义如下: 二.效率很低的解法 很多C/C++/C#/Java语言教科书在讲述递归函数的时候,大多都会用Fibonacci作为例子,因此我们会对这种解法烂熟于心: public static long FibonacciRecursively(uint n) { ) { ; } ) { ; } ) + FibonacciRecursively(n - ); } 上述递归的解法有很严重的效…
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0).(n<=39) 法一: public class Solution { public int Fibonacci(int n) { int[] fib = new int[40]; fib[0] = 0; fib[1] = 1; for(int i = 2; i < 40; i++) fib[i] = fib[i-1] + fib[i-2]; return fib[n]; } } 法…
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 简简单单 废话不多说,直接上代码: public class Solution { public int Fibonacci(int n) { try { if(n==0){ return 0; } if(n==1) { return 1; } else if (n>=2&&n<=39) { return Fibonacci(n-1)+Fibona…
题目:斐波那契数列 考点:递归和循环 题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0),n<=39. 法一:递归法,不过递归比较慢,会超时,所以不考虑 举个小点的例子,n=4,看看程序怎么跑的:     Fibonacci(4) = Fibonacci(3) + Fibonacci(2);                     = Fibonacci(2) + Fibonacci(1) + Fibonacci(1) + Fibona…
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 题目分析 我们都知道斐波那契可以用递归,但是递归重复计算的部分太多了(虽然可以通过),但是这道题更应该用动态规划来做, 动态规划的特点是:最优子结构.无后效性.子问题重叠.话不多说,直接上代码 代码 function Fibonacci(n) { // write code here. let f = 0, g = 1; while (n--) { g += f; f = g - f; } re…
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 题目地址 https://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 思路 斐波那契数列…
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. n<=39 这么直接的问fibonacci,显然是迭代计算.递归的问题在于重复计算,而迭代则避免了这一点:递归是自顶向下,会重复产生子问题:而迭代是自底向上,一步一个脚印,没有重复的子问题. class Solution { public: int Fibonacci(int n) { if(n<=1) return n; int a = 0; // f(0) int b = 1; // f(1) for(int…
一.题目 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39. 二.思路 序号:                  0  1   2   3  4   5  6  7   8    9   10 斐波那契数列 :     0  1   1   2  3   5  8 13  21  34  55 斐波那契数列 除了前两个数0和1外,后面的元素为前面两个元素之和. 三.代码 1.解答代码 public class Fibonacci { public int…