博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构与算法面试题80道(19)
阅读量:7143 次
发布时间:2019-06-29

本文共 734 字,大约阅读时间需要 2 分钟。

19:

题目:定义Fibonacci数列如下

 / 0 n=0

f(n)= 1 n=1

 \ f(n-1)+f(n-2) n=2

 

输入n,用最快的方法求该数列的第n项。

分析:在很多C语言教科书中讲到递归函数的时候,都会用Fibonacci作为例子。

因此很多程序员对这道题的递归解法非常熟悉,但....呵呵,你知道的。。

 

留意最后一句话,说明不能用递归求值。我们打表,用递推将能存下的数保存在数组中,查询时间为O(1)

 

#include
//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[n]); printf("请输入一个有意义的数(0~46),ctrl+z结束输入\n"); } return 0;}

 

转载于:https://www.cnblogs.com/wabi87547568/p/5265978.html

你可能感兴趣的文章
linux性能优化
查看>>
MYSQL连接字符值的语句
查看>>
各种面试题2 重复
查看>>
SUSE10 SP2/SP3 无规律死机故障解决
查看>>
linux stat 命令查看文件信息
查看>>
JavaScript 内置对象
查看>>
emacs下color-theme.el的正确配置方法
查看>>
获取被选择的radio的值
查看>>
ExtJS错误解决 Cannot read property 'on' of undefined
查看>>
VS2017 WinFrom打包设置与教程
查看>>
bzoj1066 [SCOI2007]蜥蜴
查看>>
KVO的底层实现
查看>>
【软件工程实践】第四次作业:阅读《构建之法》1-5章
查看>>
vss安装注意点
查看>>
【文文殿下】APIO2019游记
查看>>
有滚动条得情况下,求标签离浏览器视口高度
查看>>
总结3
查看>>
告别2015, 展望2016
查看>>
CentOS7 64位安装mysql教程
查看>>
继承(类和结构继承)
查看>>