斐波那契数列
来源:互联网 发布:淘宝联盟 预售 返利 编辑:程序博客网 时间:2024/05/16 08:04
面试题9:题目一:写一个函数,输入n,求斐波那契数列的第n项,斐波那契数列的定义如下:
0 n=0
f(n) = { 1 n=1
f(n-1)+f(n-2) n>1
第一放映这题用递归做只要5行代码就搞定了,稍微考虑发现如果写递归的代码估计就拿不到offer了,因为这是大一的时候几乎所有的入门的编程语言中都会给出的一个解法。
所以不能用递归,太浪费了,递归需要保存现场变量、堆栈信息等因此对于这么一个小程序来讲实际上是用大炮打蚊子。
考虑到递归之所以效率低的原因是没有保存中间的结果,所以采用如下的代码:
int Fibonacci(int i){int []result;//用于保存中间结果if(i == 0){result[0] = 0;return 0;}else if(i == 1){result[0] = 0;return 1;}else{for(int j=2;j<=i;j++){result[j] = result[j-1] + result[j-2];}return result[i];}}虽然在算法没什么值得称赞的地方,但是确实是针对递归没用保存中间的计算结果而导致效率低下的一种合理的解决方案。
0 0
- 斐波那契数列数列计算
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- 斐波那契数列
- .net 使用属性进行校验
- 常见浏览器User-Agent大全
- [android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题
- [Opencv源码阅读]HogDescriptor
- UIWebView网页视图
- 斐波那契数列
- 电话接听自动打开免提功能实现
- Git Branch 的操作與基本工作流程
- 使用js过滤内容中<script>
- 智能控件变幻
- (五)DIH增量、定时导入并检索数据
- svn branch 创建分支
- Android开源学院-GitHub优秀开源项目集锦
- rete算法学习