当前位置:首页 > 未命名 > 正文内容

【解题报告】斐波拉切数列Fibonacci

u3blog9年前 (2016-04-10)未命名550

题目地址

http://www.lintcode.com/en/problem/fibonacci/

题目大意

给定n,求斐波拉切数列的第n项

思路和解法

主流的思路有两种

1.使用递归来进行求解

该方法非常简单粗暴,直接依照斐波拉切数列的性质使用递归来求解,下面是代码
  1. public int fibonacci(int n) {
  2. // write your code here
  3. return fb(n-1);
  4. }
  5. private int fb(int n){
  6. if(n == 0||n == 1){
  7. return n;
  8. }
  9. else
  10. return fb(n-1)+fb(n-2);
  11. }
但是该方法有一个问题,当n太大的时候,由于递归层次过多,会超时 ###2.首先暴力打表,然后直接返回第n个 该方法的思想是首先生成前n个,存入数组,这样就不会超时了 代码:
  1. public int fibonacci(int n) {
  2. // write your code here
  3. return fb(n-1);
  4. }
  5. private int fb(int n){
  6. if(n == 0||n == 1){
  7. return n;
  8. }
  9. else
  10. return fb(n-1)+fb(n-2);
  11. }

总结

对于某些题目,如果正常手段无法奏效,无妨试试特殊手段,比如暴力打表,往往有意想不到的收获,做题时要放宽思路,大胆假设,小心实践。

扫描二维码推送至手机访问。

版权声明:本文由u3blog发布,如需转载请注明出处。

本文链接:https://u3blog.xyz/?id=308

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。