有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
对兔子,假如兔子都不死,n个月后有多少对兔子?
分析题目后,会发现兔子的数量是一个斐波那契数列:1,1,2,3,5,8......
#方法一:列表追加实现斐波那契数列
def tuzi(n: int)->list:
li = [1, 1]
if n > 2:
for i in range(2, n):
li.append(sum(li[(i-2):i]))
return li[n-1]
#方法二:递归实现
def tuzi1(n):
if n <=2:
return 1
return tuzi1(n-1)+tuzi(n-2)
#方法三:2个变量实现
def tuzi2(n):
pre1 = 1
pre2 = 1
if n > 2:
for i in range(n-2):
pre1, pre2 = pre2, pre1+pre2
return pre2