矩形覆盖

我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?

 1 function rectCover(number)
 2 {
 3     if(number == 1 || number == 0) {
 4         return number;
 5     } else if(number == 2) {
 6         return 2;
 7     } else {
 8         return rectCover(number-1) + rectCover(number-2);
 9     }
10 }
11 module.exports = {
12     rectCover : rectCover
13 };

emmm....斐波那契数列。

考虑最后一步如果是竖着放,那么结果等于f(n-1);

 

如果最后一步横着放,倒数第二步也必然横着放,那么结果等于f(n-2);

 

所以: f(n) = f(n-1) + f(n-2)

posted @ 2018-03-29 16:51  修-夏-  阅读(68)  评论(0编辑  收藏  举报