美文网首页剑指offer
09_斐波那契数列

09_斐波那契数列

作者: 是新来的啊强呀 | 来源:发表于2020-05-18 21:04 被阅读0次

    要求:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39
    分析:斐波那契数列的标准公式为:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
    方法一:递归法,直接根据公式写出,时间复杂度:O(2^n),空间复杂度:O(1)
    方法二:我们可以将递推式的求解从自顶向下改为自底向上(循环实现)。简而言之,我们已知前两项的值,然后我们就可以用前两项的值求出第3项的值,接着求第4、第5、……,直到求出第n项的值。时间复杂度和空间复杂度:O(n)、O(n)

    // 方法一,递归法
    public int Fibonacci(int n) { 
        // 退出条件
        if (n == 0) return 0;
        if (n == 1) return 1;
        return Fibonacci(n-1) + Fibonacci(n-2); 
    }
    
    // 方法二,递归会重复计算大量相同数据,我们用个数组把结果存起来
    public static int[] Fibonacci(int n){
            int[] f = new int[n];
            f[0] = 0;
            f[1] = 1;
            for(int i = 2;i<n;i++){
                f[i] = f[i-1] +f[i-2];
            }
            return f;
        }

    相关文章

      网友评论

        本文标题:09_斐波那契数列

        本文链接:https://www.haomeiwen.com/subject/uigpohtx.html