我们可以用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)