(8)斐波那契实现三种方法

来源:互联网 发布:ubuntu自带拼音输入法 编辑:程序博客网 时间:2024/05/01 10:08
// 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;}

原创粉丝点击