C++实现斐波那契第N项非递归与递归实现的时间比较
/* * 斐波那契数列.cpp * * Created on: 2018年4月9日 * Author: soyo */ #include<iostream> #include<ctime> using namespace std; //# define CLOCKS_PER_SEC ((clock_t) 1000000) 它表示1秒钟里有多少个嘀嗒个数。 int main() { long long Fibonaci(int n); long long fibi(int n); int n,FibN,FibN2; clock_t start,finsh,time; cin>>n; start=clock(); FibN=Fibonaci(n); finsh=clock(); time=finsh-start; cout<<"斐波那契数列第"<<n<<"项为:"<<FibN<<"运行时间为:"<<time<<"微秒"<<endl; start=clock(); FibN2=fibi(n-1); finsh=clock(); time=finsh-start; cout<<"(递归)斐波那契数列第"<<n<<"项为:"<<FibN2<<"运行时间为:"<<time/1000000<<"秒"<<endl; } long long Fibonaci(int n) { int result[]={0,1}; if(n<2) return result[n]; long long NumOne=0; long long NumTwo=1; long long fibN=0; for(int i=2;i<n;i++) { fibN=NumOne+NumTwo; NumOne=NumTwo; NumTwo=fibN; } return fibN; } long long fibi(int n) //递归实现 { if(n==0) return 0; if(n==1) return 1; else return fibi(n-1)+fibi(n-2); }
结果:
47 斐波那契数列第47项为:1836311903运行时间为:4微秒 (递归)斐波那契数列第47项为:1836311903运行时间为:19秒