面试题9:斐波那契数列
2014-12-30 15:45
162 查看
题目:写一个函数,输入n,求斐波那契数列的第n项。
解法一(递归):效率低下,不太理想。
解法二(优化):实用解法,比较高效。
算法对比:
虽然上述算法对比在不同的运行环境下具有一定的差异性,但是我们可以从中发现:第一种基于递归的解法虽然直观可是时间效率很低,在实际软件开发中不会使用这种方法;第二种方法把递归的算法使用循环实现,极大地提高了时间效率,属于优秀的解法之一。
解法一(递归):效率低下,不太理想。
public long Fibonacci(int n) { if(n <= 0) return 0; if(n == 1) return 1; return Fibonacci(n - 1) + Fibonacci(n - 2); }
解法二(优化):实用解法,比较高效。
public long Fibonacci(int n) { int [] result = {0, 1}; if(n < 2) return result ; long fibNMinusOne = 1; long fibNMinusTwo = 0; long fibN = 0; for(int i = 2; i <= n; ++i) { fibN = fibNMinusOne + fibNMinusTwo; fibNMinusTwo = fibNMinusOne; fibNMinusOne = fibN; } return fibN; }
算法对比:
n | 耗时(ms) | |
递归算法 | 优化算法 | |
0 | 0 | 0 |
5 | 0 | 0 |
10 | 0 | 0 |
15 | 0 | 0 |
20 | 0 | 0 |
25 | 0 | 0 |
30 | 16 | 0 |
35 | 93 | 0 |
40 | 1079 | 0 |
45 | 11969 | 0 |
50 | 132422 | 0 |
相关文章推荐
- 剑指offer面试题 斐波那契数列
- 【剑指offer】面试题9:斐波那契数列
- 【面试题009】斐波那契数列
- 面试题斐波那契数列
- 《剑指Offer》学习笔记--面试题9:斐波那契数列
- 剑指offer面试题9 斐波那契数列及青蛙跳台阶问题
- 剑指Offer---面试题9:斐波那契数列
- 剑指offer-面试题9:斐波那契数列
- 剑指Offer面试题9斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- 面试题9:斐波那契数列
- Java中斐波那契数列相关面试题
- 面试题整理-斐波那契数列
- 剑指Offer面试题9(java版):斐波那契数列
- 面试题3:斐波那契数列与爬楼梯
- 《剑指offer》面试题9:斐波那契数列
- 剑指offer:面试题9,斐波那契数列
- 面试题9 斐波那契数列
- 【面试题】剑指offer09--递归法和非递归法斐波那契数列的第n个数