剑指offer:有时间限制 实现斐波那契数列

来源:互联网 发布:ubuntu最好用的输入法 编辑:程序博客网 时间:2024/05/01 01:40

剑指offer:实现斐波那契数列

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。
  • 时间限制:1秒空间限制:32768K
  • 通过比例:25.93%
  • 最佳记录:0 ms|3156K

斐波那契数列为:0,1,1,3,5,8,13,21,34,........

首先实现为:

class Solution {public:    int Fibonacci(int n) {        if(n == 0 )            {             return 0;            }  
        else if(<span style="font-family: Arial, Helvetica, sans-serif;">n ==1</span>)
         { return 1;}              else             {              return Fibonacci(n-1)+Fibonacci(n-2);         }    }};

运行超时,修改后为:

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

仍然超时,发现只要是用递归,都会引起超时,这时考虑不用递归,采用数组的方法

class Solution {public:    int Fibonacci(int n)     {        int A[71],i;        A[0]=0;A[1]=1;        for(i=2;i<71;++i)             A[i]=A[i-1]+A[i-2];        return A[n];    }};














0 0