【剑指offer】07.斐波那契数列

7.斐波那契数列

知识点:数组;递归

题目描述

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n <= 39.


解法一

刚开始看到的时候第一思路直接上数组了,如下:

public class Solution{
    public int Fibonacci(int n){
        int[] arr = new int[40];
        arr[0] = 0;
        arr[1] = 1;
        if(n <= 1) {
            return arr[n];
        }else{
            for(int i = 2; i <= n; i++){
                arr[i] = arr[i-1] + arr[i-2];
            }
            return arr[n];
        }
    }
}

时间复杂度:O(n);空间复杂度:O(n);

解法二

这题应该是和汉诺塔一样很经典的递归问题,所以用递归应该是最好的解题思路

public class Solution{
    public int Fibonacci(int n){
        if(n <= 1){
            return n;
        }
        return Fibonacci(n-1) + Fibonacci(n-2);
    }
}

时间复杂度:O(2^n); 空间复杂度:O(1);

posted @ 2021-05-07 17:44  Curryxin  阅读(90)  评论(0)    收藏  举报
Live2D