斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)
方法一:常见写法
def Feb(n):
if n<=0 :
return 0
elif n==1:
return 1
else:
return Feb(n-1)+Feb(n-2)
def FebList(n):
list=[]
for i in range(n):
list.append(Feb(i))
return list
方法二:精简下两个函数
Feb = lambda n:n if n<=1 else Feb(n-1)+Feb(n-2)
def FebList(n):
return [Feb(i) for i in range(1,n+1)
print(FebList(5))
方法三:使用生成器
(曾经有面试官问,如果我需要生成一个亿的列表,上面的方式不够好,怎么优化提升效率呢?答案就是生成器)
def Feb(n):
i,a,b = 0,0,1
while i < n:
yield b
a,b = b,a+b
i = i + 1
print(list(Feb(10)))