/**
     * Fibonacci的做法有很多种,有通过矩阵的,DP的,递推和递归,
     * 如果用递归来做肯定会爆栈,这里用两种写法来做,第一种
     * 是递推的做法,时间复杂度O(n) 空间复杂度O(n)
     */
    public int Fibonacci(int n) {
        int arr[] = new int[40];
        arr[0] = 0;
        arr[1] = 1;
        arr[2] = 1;
        for (int i = 3; i < arr.length; i++){
            arr[i] = arr[i-1]+arr[i-2];
        }
        return arr[n];
    }

关于矩阵的做法写在这里了
https://zhuanlan.zhihu.com/p/53781455