码迷,mamicode.com
首页 > 其他好文 > 详细

Fibonacci数列

时间:2015-04-02 01:07:00      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:

第一种:用递归法(时间复杂度是n的指数级别)

  

#include<iostream>

int fun(int x)
{
    if(x==1||x==2)
        return 1;
    return (fun(x-1)%10007 + fun(x-2)%10007);
}
 
int main()
{
    int n;
    std::cin>>n;
    std::cout<<fun(n);
    return 0;
}

第二种:用数组(时间复杂度为O(n),空间复杂度为O(n))

#include<iostream>

int fun(int x)
{
    int *arr = new int[x+1];
    arr[0]=1;
    arr[1]=1;
    for(int i=2;i<=x;i++)
        arr[i] = arr[i-1]%10007 + arr[i-2]%10007;
    int result = arr[x-1]%10007;
    delete [] arr;
    return result;
}

int main()
{
    int n;
    std::cin>>n;
    std::cout<<fun(n);
    return 0;
}

第三种:和第二种一样(空间复杂度为O(1),时间复杂度为O(n))

#include<iostream>

int fun(int x)
{
    int pre=1;
    int post=1;
    int result=0;
    if(x==1||x==2)
        return 1;
    for(int i=2;i<x;i++)
    {
        result = pre%10007 + post%10007;
        post = pre%10007;
        pre = result%10007;    
    }
    return result%10007;
}

int main()
{
    int n;
    std::cin>>n;
    std::cout<<fun(n);
    return 0;
}

技术分享

从下到上是运行情况。

Fibonacci数列

标签:

原文地址:http://www.cnblogs.com/fudianheg/p/4385678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!