//10 斐波那契数列
#include<iostream>
#include<ctime>
long long Fibonacci_Method1(unsigned int n) //时间复杂度随n的增大随指数方向增长
{
if (n <= 0)
return 0;
if (n == 1)
return 1;
return Fibonacci_Method1(n - 1) + Fibonacci_Method1(n - 2);
}
long long Fibonacci_Method2(unsigned int n) //时间复杂度O(n)
{
int result[2] = { 0,1 };
if (n < 2)
return result[n];
long long fibNMinusOne = 1;
long long fibNMinusTwo = 0;
long long fibN = 0;
for (unsigned int i = 2; i <n; i++)
{
fibN = fibNMinusOne + fibNMinusTwo;
fibNMinusTwo = fibNMinusOne;
fibNMinusOne = fibN;
}
return fibN;
}
int main()
{
clock_t start, finish;
double totaltime;
start = clock();
Fibonacci_Method1(30);
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
std::cout << "Method 1:" << totaltime << std::endl;
clock_t start1, finish1;
double totaltime1;
start1 = clock();
Fibonacci_Method2(30);
finish1 = clock();
totaltime1 = (double)(finish1 - start1) / CLOCKS_PER_SEC;
std::cout << "Method 2:" << totaltime1 << std::endl;
std::cin.get();
return 0;
}