题目描述
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
解题思路
当n为1时,只有一种覆盖方法;当n为2 时,有两种覆盖方法;可以先覆盖 2*1 的矩形,再覆盖 2*(n-1) 的矩形;或者先覆盖 2*2 的矩形,再覆盖 2*(n-2)
的矩形。而覆盖 2*(n-1) 和 2*(n-2) 的矩形可以看成子问题。

解题代码
- 递归写法
1 | public int RectCover(int target) { |
- 非递归写法
1 | public int RectCover(int n) { |