#include<iostream>#include<vector>#include<Ctime> using namespace std;long long fibRecursion(unsigned n) {if(n <= 0) {return 0LL;} if(n == 1) {return 1LL;}if(n >= 2) {return fibRecursion(n - 1) + fibRecursion(n -2);}} long long fibUnRecursion(unsigned n) {if(n == 0) {return 0LL;} if(n == 1) {return 1LL;}long long fibNSmaller = 0LL;long long fibNBigger = 1LL;long long fibN = 0LL;unsigned i = 2;for(i = 2; i <= n; i++){fibN = fibNSmaller + fibNBigger;fibNSmaller = fibNBigger;fibNBigger = fibN;}return fibN;} int main() {unsigned i = 0; clock_t start, finish; start = clock();cout<<"fibRecursion(46) = "<<fibRecursion(45)<<endl;finish = clock();double duration = (double)(finish - start) / CLOCKS_PER_SEC;cout<<"execution time duration(fibRecursion):"<<duration<<endl;start = clock();cout<<"fibUnRecursion(46) = "<<fibUnRecursion(45)<<endl;finish = clock();duration = (double)(finish - start) / CLOCKS_PER_SEC;cout<<"execution time duration(fibUnRecursion):"<<duration<<endl;return 1;}
Running result:
fibRecursion(46) = 1134903170execution time duration(fibRecursion):11.603fibUnRecursion(46) = 1134903170execution time duration(fibUnRecursion):0.001--------------------------------Process exited with return value 0Press any key to continue . . .
From the running results, we can see that the non-recursive method is much more efficient than the recursive method in finding the Fibonacci sequence.
09 _ Fibonacci Series