1. 可以用2×1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2×1的小矩形无重叠地覆盖一个2×n的大矩形,总共有多少种覆盖方法?请用递归的方式实现

  • 斐波那契数列的应用
def rectCover1(number):
if number == 0:
return 0
elif number == 1:
return 1
elif number == 2:
return 2
else:
return rectCover1(number - 1) + rectCover1(number - 2)

print(rectCover1(10))
89

2. 请用非递归的方式实现第1题

def rectCover2(number):
if number == 0:
return 0
elif number == 1:
return 1
elif number == 2:
return 2
else:
res = [0, 1, 2]
while len(res) <= number:
res.append(res[-1] + res[-2])
return res[number]

print(rectCover2(10))
89

​77 - 乘积最大子序列​