首页 > 其他 > 详细

计算fibonacci数(多种方法)

时间:2017-12-06 19:25:42      阅读:260      评论:0      收藏:0      [点我收藏+]
#include  <iostream>
using namespace std;

//计算fibonacci数

//方法一:二分递归法,时间复杂度为O(2^n),额外空间复杂度为常数
int RecursiveFibonacci(int n)
{
    return (n < 2) ? n : RecursiveFibonacci(n - 1)+RecursiveFibonacci(n-2);
}
//方法二:线性递归,时间复杂度为O(n),空间复杂度为O(n)
int LinearrecursionFibnoacci(int n,int& prev)//要用到引用,要不不可以!!!!
{
    if (n == 0)
    {
        prev = 1;
        return 0;
    }
    else
    {
        int prevPrev;
        prev = LinearrecursionFibnoacci(n - 1, prevPrev);
        return prevPrev + prev;
    }
}
//方法三:迭代法,时间复杂度为O(n),空间复杂度为常数
int IterationFibonacci(int n)
{
    int f = 1, g = 0;
    while (n--)
    {
        g += f;
        f = g - f;
    }
    return g;
}

int main()
{
    int num_1,num_2,num_3;
    int f=0;
    num_1 = RecursiveFibonacci(24);
    num_2 = LinearrecursionFibnoacci(24, f);
    num_3 = IterationFibonacci(24);
    cout << num_1 << endl;
    cout << num_2 << endl;
    cout << num_3 << endl;
    return 0;
}

 

计算fibonacci数(多种方法)

原文:http://www.cnblogs.com/panlangen/p/7994168.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!