【剑指offer】面试题9:斐波那契数列

来源:互联网 发布:养生软件下载排行榜 编辑:程序博客网 时间:2024/05/16 04:31

题目:写一个函数,输入n,求斐波那契数列的第n项。

方法1:递归。缺点:如果n比较大,那么递归程度比较深

方法2首先根据f(0)和f(1)计算出f(2),再根据f(1)和f(2)算出f(3),以此类推……
            时间复杂度O(n) 

代码如下:

#include<iostream>using namespace std;//使用递归的方法实现斐波那契数列,重复计算太多节点的值 int Fib_Recursion(int n)  {if(n==0)    return 0;if(n==1)    return 1;    return  Fib_Recursion(n-1)+Fib_Recursion(n-2);}//更为简单的方法,首先根据f(0)和f(1)计算出f(2),再根据f(1)和f(2)算出f(3),以此类推……//时间复杂度O(n) int Fib_New(int n){int result[2]={0,1};if(n<2)    return result[n];int fibMinus1=1;  // Fib(n-1)int fibMinus2=0;  // Fib(n-2)int fibN=0;       // 我们要求的Fib(N)for(int i=2;i<=n;i++){fibN=fibMinus1+fibMinus2;fibMinus2=fibMinus1;fibMinus1=fibN;}return fibN;}int main(){int n;cin>>n;cout<<Fib_Recursion(n)<<endl;cout<<Fib_New(n)<<endl;return 0;}


阅读全文
0 0
原创粉丝点击