数据结构与算法面试题80道(19)
2016-03-11 15:39
281 查看
第19题:
题目:定义Fibonacci数列如下:
/ 0 n=0
f(n)= 1 n=1
\ f(n-1)+f(n-2) n=2
输入n,用最快的方法求该数列的第n项。
分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。
因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。
留意最后一句话,说明不能用递归求值。我们打表,用递推将能存下的数保存在数组中,查询时间为O(1)
题目:定义Fibonacci数列如下:
/ 0 n=0
f(n)= 1 n=1
\ f(n-1)+f(n-2) n=2
输入n,用最快的方法求该数列的第n项。
分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。
因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。
留意最后一句话,说明不能用递归求值。我们打表,用递推将能存下的数保存在数组中,查询时间为O(1)
#include<cstdio> //fib[46]不会爆int,47就爆了 int fib[50]; void fun(){//打表 fib[0]=0; fib[1]=1; for(int i=2;i<47;i++) fib[i]=fib[i-1]+fib[i-2]; } int main(){ fun(); int n; printf("请输入一个有意义的数(0~46),ctrl+z结束输入\n"); while(~scanf("%d",&n)){ if(n>46) printf("计算数值超过int,请从新输入\n"); else if(n<0) printf("数值小于0,无意义,请从新输入\n"); else printf("fib[%d]=%d\n",n,fib ); printf("请输入一个有意义的数(0~46),ctrl+z结束输入\n"); } return 0; }
相关文章推荐
- 数据结构与算法面试题80道(18)
- 线段树学习笔记
- 最短路径(一)——多源最短路径
- 数据结构与算法面试题80道(17)
- 数据结构与算法面试题80道(16)
- Python支持的数据结构
- 数据结构与算法面试题80道(15)
- cgroups2 数据结构设计
- 数据结构和算法_02时间复杂度和空间复杂度
- Redis源代码分析-内存数据结构intset
- 数据结构——《大话数据结构》之时间复杂度
- 数据结构与算法面试题80道(14)
- 简单数据结构(五)串和数组
- 数据结构-排序-交换排序
- 简析归并排序
- HDFS追本溯源:租约,读写过程的容错处理及NN的主要数据结构
- Python实现列表转换成字典数据结构的方法
- 《数据结构与算法分析》—栈的链表和数组实现(C语言)
- LCT解法解决数据结构神薙bzoj1036
- 数据结构数据生成器--生成树 bzoj1036