問題:咱們能夠用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法?java
當 n=1,只有一種方法,code
當 n = 2,只有兩種方法。blog
要覆蓋 2*n 的大矩形,能夠先覆蓋 2*1 的矩形,再覆蓋 2*(n-1) 的矩形;或者先覆蓋 2*2 的矩形,再覆蓋 2*(n-2) 的矩形。而覆蓋 2*(n-1) 和 2*(n-2) 的矩形能夠當作子問題。該問題的遞推公式以下:get
public class Solution { public int RectCover(int target) { if (target < 1) { return 0; } else if (target == 1 || target == 2) { return target; } else { return RectCover(target-1) + RectCover(target-2); } } }