简单介绍一下斐波那契数列
又称黄金分割数列,因数学家莱昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义: F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
迭代实现
def fibIter(n):
a = 0
b = 1
while n > 2:
c = a + b
a = b
b = c
n -= 1
return c
递归实现
def fibRecur(n):
if n == 1:
return 0
elif n == 2:
return 1
else:
return fibRecur(n-1) + fibRecur(n-2)
闭包实现
def fib():
a = 0
b = 1
def summary():
nonlocal a,b
temp = a
a = b
b = temp + b
print(temp,end=' ')
return summary
f = fib()
f()#此时f相当于summary
#################也可以采用如下方法批量产出
def get_fib(n):
f = fib()
for i in range(n):
f()
n = int(input("请输入需要获取的斐波那契数列:"))
get_fib(n)
生成器实现
def fib():
back1, back2 = 0, 1
while True:
yield back1
back1, back2 = back2, back1 + back2
f = fib()#此时的i为生成器对象,可以用for循环迭代
for i in f:
print(i)#这是一个死循环哦