您的位置:首页 > 其它

矩形覆盖——递归

2016-10-03 16:22 169 查看
题目描述:我们可以用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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归