知识点:递归和循环
题目描述
我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
分析:我们先把2x8的覆盖方法记为f(8).用第一个2x1的小矩形去覆盖大矩形的最左边时有两种选择:竖着或者横着放。当竖着放的时候,右边还剩下2x7的区域,这种情况下的覆盖方法记为f(7);横着f(6).f(8)=f(6)+f(7).
public class Solution{
public int RectCover(int target){
if(target==1||target==2){
return target;
}
int a=1;
int b=2;
int result = 0;
for(int i=3;i<=target;i++){
result=a+b;
a=b;
b=result;
}
return result;
}
}