剑指offer---裴波拉契数列

class Solution
{
public:
    int Fibonacci(int n)
    {
        if (n != 0)
        {
            vector<int> array;
            array.push_back(1);
            array.push_back(1);
            int k = 2;
            while (k < 39)
            {
                array.push_back(array[k - 1] + array[k - 2]);
                ++k;
            }
            return array[n-1];
        }
        else return 0;
    }
};
时间: 2024-11-10 07:48:08

剑指offer---裴波拉契数列的相关文章

剑指offer斐波那契数列python

题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 思路 斐波那契数列,即第n项为第n-1项和n-2项的和,可用递归,但复杂度高.直接用一个数组保存之前的项即可. 代码 1 # -*- coding:utf-8 -*- 2 class Solution: 3 def Fibonacci(self, n): 4 ans = [0,1,1,2] 5 while n > len(ans) - 1: 6 ans.append(a

[剑指OFFER] 斐波那契数列- 跳台阶 变态跳台阶 矩形覆盖

跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. class Solution { public: int jumpFloor(int number) { if(number == 1) return 1; if(number == 2) return 2; int n1 = 1; int n2 = 2; int rtn = 0; for(int i = 3; i <= number; i++) { rtn = n1 + n2; n1 = n2;

剑指offer7: 斐波那契数列第n项(从0开始,第0项为0)

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

剑指offer 斐波那契系列

目录 T9-斐波那契用迭代 跳台阶 动规 py2 变态跳台阶 wo的初始迭代方法 数学--移位 py2 矩形覆盖 动规 Py2 T9-斐波那契用迭代 跳台阶 动规 py2 # -*- coding:utf-8 -*- class Solution: def jumpFloor(self, number): # write code here if number<0: return -1 if number <=2: return number a,b=1,2 res = 0 for i in

剑指Offer07 斐波那契数列

1 /************************************************************************* 2 > File Name: 07_Fibonacci.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月29日 星期一 20时23分54秒 6 *****************************************

《剑指offer》------斐波拉契数列

题目一:求斐波拉契数列的第n项. 写出一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项.斐波拉契数列定义如下: C++实现: //斐波拉契数列 #include <iostream> using namespace std; //递归实现 long long Fibonacci1(unsigned int n){ if(n<=1){ return n; } return Fibonacci1(n-1)+Fibonacci1(n-2); } //非递归实现 long long

剑指offer-第二章算法之斐波拉契数列(青蛙跳台阶)

递归与循环 递归:在一个函数的内部调用这个函数. 本质:把一个问题分解为两个,或者多个小问题(多个小问题相互重叠的部分,会存在重复的计算) 优点:简洁,易于实现. 缺点:时间和空间消耗严重,如果递归调用的层级太多,就会超出栈容量. 循环:通过设置计算的初始值及终止条件,在一个范围内重复运算. 斐波拉契数列 题目一:写一个函数,输入n,求斐波拉契(Fibonacci)数列的第n项,定义如下: 第一种解法:用递归的算法: long long Fabonacci(unsigned int n) { i

斐波拉契数列的计算方法

面试题9.斐波拉契数列 题目: 输入整数n,求斐波拉契数列第n个数. 思路: 一.递归式算法: 利用f(n) = f(n-1) + f(n-2)的特性来进行递归,代码如下: 代码: long long Fib(unsigned int n) { if(n<=0) return 0; if(n==1) return 1; return Fib(n-1) + Fib(n-2); } 缺陷: 当n比较大时递归非常慢,因为递归过程中存在很多重复计算. 二.改进思路: 应该采用非递归算法,保存之前的计算结

斐波拉契数列的递归、非递归、公式法多种方法实现

实现斐波拉契数列:1,1,2,3,5,8...,当n>=3时,f(n)=f(n-1)+f(n-2). 解:求解斐波拉契数列方法很多,这里提供了4种实现方法和代码,由于第5种数学公式方法代码太过繁琐,只做简单介绍 方法一:递归调用,每次递归的时候有大量重复计算,效率低,可将其调用的过程转化成一颗二叉树进行分析,二叉树的总结点个数不超过(2^n-1)个,由于其是不完全二叉树,那么函数计算的次数必小于(2^n-1),时间复杂度为O(2^n):递归调用的深度为n,空间复杂度为O(n) 方法二:非递归数组

浅谈C#中的斐波拉契数列

突然对那些有趣的数学类知识感兴趣了,然后就简单研究了一下斐波拉契数列,看看它的有趣之处! 斐波拉契数列(Fibonacci Sequence),又称黄金分割数列,该数列由意大利的数学家列奥纳多·斐波那契发现的.这种数列指的是这样一个数列:0.1.1.2.3.5.8.13.21. 34.--在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*). 用C#实现斐波拉契数列的代码: Console.Write("请输入一个长