题目描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路:
当n = 0时,有0种方法;
当n = 1时,有1种方法:一个2*1的小矩形横放;
当n = 2时,有2种方法:两个小矩形竖放或者横放;
当n = 3时,有3种方法:n-1时加一个横放的小矩形,n-2时加两个竖放的小矩形;
当n = 4时,有5种方法:同n = 3时;
。
。
。
得出递归式:f(n) = f(n - 1) + f(n - 2)
public class Solution {
public int RectCover(int target) {
if(target == 0){
return 0;
}else if(target == 1){
return 1;
}else if(target == 2){
return 2;
}else{
return RectCover(target - 1) + RectCover(target - 2);
}
}
}