// sf8.cpp : 定义控制台应用程序的入口点。
//http://blog.csdn.net/sunboyiris
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
long fun(int n)
{
if((n==1)|(n==2))
return 1;
else
return(fun(n-1)+fun(n-2));
}
long FibIter(int n)
{
//用迭代的方式求解Fibonacci数列
int twoback=1,oneback=1,current;
int i;
if (n==1||n==2)
return 1;
else
for(i=3;i<=n;i++)
{
current=twoback+oneback;
twoback=oneback;
oneback=current;
}
return current;
}
double FibFormula(int n)
{
//用公式求解
double p1,p2;
double t1,t2;
t1=sqrt(5.0);
t1=(1+t1)/2.0;
t2=sqrt(5.0);
t2=(1-t1)/2.0;
p1=(double)pow(t1,n);
p2=pow(t2,n);
return (p1 - p2) /sqrt((double)(5.0));
}
int main()
{
int N,MAXN=100;
long set,set1,set2;
srand(time(NULL));
clock_t ibegin, iend;
printf("--当前数据量为%d--By vicent(http://blog.csdn.net/sunboyiris)--\n", MAXN);
ibegin = clock();
iend = clock();
printf("%d毫秒\n", iend - ibegin);
printf("--当前数据量为%d--By vicent(http://blog.csdn.net/sunboyiris)--\n", MAXN);
ibegin = clock();
iend = clock();
printf("%d毫秒\n", iend - ibegin);
printf("--当前数据量为%d--By vicent(http://blog.csdn.net/sunboyiris)--\n", MAXN);
ibegin = clock();
for(int i=2;i<1000;i++)
{ set=fun(i); }
iend = clock();
printf("%d毫秒\n", iend - ibegin);
printf("--当前数据量为%d--By vicent(http://blog.csdn.net/sunboyiris)--\n", MAXN);
ibegin = clock();
for(int i=2;i<1000;i++)
{ set1=FibIter(i); }
iend = clock();
printf("%d毫秒\n", iend - ibegin);
printf("--当前数据量为%d--By vicent(http://blog.csdn.net/sunboyiris)--\n", MAXN);
ibegin = clock();
for(int i=2;i<1000;i++)
{ set2=FibFormula(i);}
iend = clock();
printf("%d毫秒\n", iend - ibegin);
//set=fun(N);
//set1=FibIter(N);
//set2=FibFormula(N);
//cout<<set<<endl;
//cout<<set1<<endl;
//cout<<set2<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
(8)斐波那契实现三种方法
最新推荐文章于 2022-09-08 18:00:28 发布