zoukankan      html  css  js  c++  java
  • 剑指offer-斐波那契数列

    首先,说一下斐波那契数列的定义:

    又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(≥ 2,∈ N*),也就是下一个数值是它前紧邻两个数值的和。

    直接上代码:

    //方法一【不推荐】:最简单直接的方法,但是时间复杂度O(2^n),空间复杂度o(1),但其中存在大量的重复计算,效率极低,不推荐面试使用
    public class Solution{
        public int Fibonacci(int n){
            if(n<=1){
                return n;
            }
            return Fibonacci(n-1)+Fibonacci(n-2);
        }
    }
    //方法二:优化递归,时间复杂度O(n),空间复杂度O(n)
    public class Solution {
        public int Fibonacci(int n) {
                int a[] = new int[40];
                a[0] = 0;
                a[1] = 1;
                for(int i =2;i <= n; i++){
                    a[i] = a[i-1]+ a[i-2];
                }
                return a[n];
        }
    }
    //方法三【推荐的写法】:优化存储,时间复杂度O(n),空间复杂度O(1)
    public class Solution {
        public int Fibonacci(int n) {
            if(n<2){
                return n;
            }
            //时间复杂度:O(n)
            //空间复杂度:O(1)
            int sum =0;
            int two = 0;
            int one = 1;
            for(int i=2;i<=n;i++){
                sum = two + one;
                two = one;
                one = sum;
            }
            return sum;
        }
    }
    //方法四:在方法三的基础上持续优化
    public class Solution{
        public int Fibonacci(int n){
            if(n<2){
                return n;
            }
            int sum =1;
            int one =0;
            for(int i=2;i<=n;i++){
                sum = sum + one;
                one = sum - one; //sum - one相当于方法三的 two
            }
            return sum;
        }
    }

      

    [ 版权声明 ]: 本文所有权归作者本人,文中参考的部分已经做了标记! 商业用途转载请联系作者授权! 非商业用途转载,请标明本文链接及出处!
  • 相关阅读:
    android 中webview的屏幕适配问题
    Mongo Delete-19
    Android开发初体验
    Mybatis: 插件及分页
    紧急寻人:十三岁男孩昨日出走至今未回,大家帮忙扩散寻找!
    iOS 9,为前端世界都带来了些什么?「译」
    修改 Cucumber HTML 报告
    Android多模块混淆的问题
    吴裕雄--天生自然 诗经:村居
    吴裕雄--天生自然 诗经:太虚幻境
  • 原文地址:https://www.cnblogs.com/gslgb/p/14530577.html
Copyright © 2011-2022 走看看