递归四:矩形覆盖
/**
* 题目:矩形覆盖
* 描述:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
* 解决方案:思路 :举例说明
* n = 1时 一个2*1的小矩形 2*1的大矩形 1种方法(直接填充)
* n = 2时 2个2*1小矩形 2*2的大矩形 2种方法( 竖着放或者横着放 )
* n = 3时 3个2*1的小矩形 2*3的大矩形 分两种情况 ①先竖着放,然后还有2*2个区域放,和n=2(n-1)时情况一样 ②先横着放,然后还有2*1个区域放,和n = 1(n-2)时情况一样
* n = 4时 4个小矩形 2*4的大矩形 分两种情况 ①先竖着放,然后还有2*3个区域放,和n=3(n-1)时情况一样 ②先横着放,然后还有2*2区域放,和n = 2(n-2)时情况一样
* 经过分析,主要是考虑横竖放的情况
* 1 n=1
* f(n) 2 n=2
* f(n-2)+f(n-1) n>2
* */
public class Four { public static int one(int n) { if(n == 1) { return 1; }else if(n ==2) { return 2; }else { return one(n-2)+one(n-1); } } }
天助自助者