计算fibonacci数(多种方法)

Posted P_langen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算fibonacci数(多种方法)相关的知识,希望对你有一定的参考价值。

#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数(多种方法)的主要内容,如果未能解决你的问题,请参考以下文章

位运算和关于两个数交换的多种方法

位运算和关于两个数交换的多种方法

如何为Fibonacci算法设计并行代码,但没有openmp任务?

习题6-4 使用函数输出指定范围内的Fibonacci数 (20分)

Go斐波拉契数列(Fibonacci)(多种写法)

[PTA]习题6-4 使用函数输出指定范围内的Fibonacci数