asp.net 4.0网站开发,东营有做网站的公司,软件工程考研难度,wordpress七牛云上传图片题目#xff1a;写一个函数#xff0c;输入n, 求斐波那契数列的第n项。 分析#xff1a;该题有两种实现方式递归或循环。当n比较大的时候f(n)结果也会比较大#xff0c;故定义的时候可以采用long(int 也行)。递归会有大量的重复计算#xff0c;而循环可以把f(n-1)和f(n-2)…题目写一个函数输入n, 求斐波那契数列的第n项。 分析该题有两种实现方式递归或循环。当n比较大的时候f(n)结果也会比较大故定义的时候可以采用long(int 也行)。递归会有大量的重复计算而循环可以把f(n-1)和f(n-2)的值存起来避免过多的重复计算。
上代码先递归再循环。
#includeiostream#includecstdlib#include stdio.h#includetime.hlong Fibonacci(unsigned int n){if (n 0)return 0;if (n 1)return 1;return Fibonacci(n - 2) Fibonacci(n - 1);}int main(){clock_t start, end;int n 40;start clock();int resultFibonacci(n);end clock();double time (end - start)/ CLOCKS_PER_SEC;printf(%d %f, result,time);system(pause);}
输出结果为 #includeiostream#include stdio.h#includetime.hlong Fibonacci(unsigned int n){if (n 0)return 0;if (n 1)return 1;long FibsubOne 1;long FibsubTwo 0;long Fib0 ;int i 2;while (i n){Fib FibsubOne FibsubTwo;FibsubTwo FibsubOne;FibsubOne Fib;i;}return Fib;}int main(){clock_t start, end;int n 40;start clock();int resultFibonacci(n);end clock();double time (end - start)/ CLOCKS_PER_SEC;printf(%d %f, result,time);system(pause);}
结果显示 所以给各位初学者一个tips虽然递归的代码真的很简洁但是其效率比循环低很多在很多时候并不推荐用递归。