Java面试之斐波纳契数列递归与非递归实现
2015-06-08 11:38
344 查看
问题:查找斐波纳契数列中第 N 个数。所谓的斐波纳契数列是指:前2个数是 0 和 1 。第 i 个数是第 i-1 个数和第i-2 个数的和。斐波纳契数列的前10个数字是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34 ...解答:(一)递归实现:
class Solution {/*** @param n: an integer* @return an integer f(n)*/public int fibonacci(int n) {if(n==1){return 0;}else if(n==2){return 1;}else {return fibonacci(n-1)+fibonacci(n-2);}}}总耗时: 4634 ms(二) 非递归实现
class Solution {/*** @param n: an integer* @return an integer f(n)*/public int fibonacci(int n) {int before=0,behind=0;int result=0;for(int i=0;i<n;i++){if(i==0){result=0;before=0;behind=0;}else if(i==1){result=1;before=0;behind=result;}else{result=before+behind;before=behind;behind=result;}}return result;}}总耗时: 1389 ms我们看到用非递归方法明显优化了很多,时间减少了。
相关文章推荐
- 码农们不得不重视的问题
- 国外程序员爱用苹果Mac电脑的10大理由
- 【剑指offer】 面试题3: 二维数组中的查找
- 黑马程序员---单例设计模式
- android面试题 不仅仅是面试是一个很好的学习
- (分享)码农们不得不重视的问题
- 黑马程序员java学习笔记——Collections、Arrays工具类和其他对象
- 成为一个程序员真有那么难吗?
- 黑马程序员---IOS基础---字符串数组及字符串函数
- 16届毕业的程序员在暑假实习时要注意些什么
- 程序员保值的4个秘密
- 黑马程序员_多线程
- 6-7面试真融宝日记
- 黑马程序员——Java基础---集合<二>Map,Arrays,Collections
- 华为实验1
- 华为实验3
- 综合实验
- ospf单区域
- ASA防火墙应用及配置
- 三层交换技术