C++ Fibonacci数列 O(2^n) 和 O(n)解法

来源:互联网 发布:阿里巴巴数据采集器 编辑:程序博客网 时间:2024/06/05 19:20
#include <iostream>


int Fibonacci(int num);
int Fibonacci_pro(int num);


int main()
{
int num = 0;
while (std::cin >> num)
{
std::cout << Fibonacci_pro(num) << std::endl;
}
system("pause");
return 0;
}


int Fibonacci(int num) //暴力递归版本的Fibonacci O(2^n)
{
if (num < 1)
return 0;
if (num == 1 || num == 2)
return 1;
else
return Fibonacci(num - 1) + Fibonacci(num - 2);
}


int Fibonacci_pro(int num) //从左到右依次求出每一项的值,通过顺序计算求得第n项的值 O(n)
{
if (num < 1)
return 0;
if (num == 1 || num == 2)
return 1;


int res = 1;
int pre = 1;
int tmp = 0;


for (int i = 3; i <= num; ++i)
{
tmp = res;
res = res + pre;
pre = tmp;
}
return res;
}
原创粉丝点击