题目

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

思路

动态规划
f(n)可以是2*(n-1)的矩形加一个竖着放的21的矩形或2(n-2)的矩形加2横着放的,即f(n)=f(n-1)+f(n-2)
当到了最后,f(1)=1,f(2)=2

代码

function rectCover(number) {
  // write code here
  if (number === 0) return 0;
  let f = 1,
    g = 2;
  while (--number) {
    g += f;
    f = g - f;
  }
  return f;
}