public class Solution {
    //解题思路:
    //动态规划的题,基本都可以将前5个画出来,然后找规律
    //n = 1, 1种方法
    //n = 2, 2种方法
    //n = 3, 3种方法
    //n = 4, 4种方法
    //n = 5, 5种方法
    //可得出规律:rectCover(n) = rectCover(n-1) + rectCover(n -2)
    //解法一:递归
    public int rectCover(int target) {
        if(target <= 2) {
            return target;
        }
        return rectCover(target-1) + rectCover(target-2);
    }
    
    
    //解法二:优化递归存储
    public int rectCover(int target) {
        if(target <= 2) {
            return target;
        }
        int one =1;
        int two =2;
        for(int i = 3; i<= target; i ++) {
            two = one + two;
            one = two - one;
        }
        return two;
    }
}