Python-斐波那契数列的多种实现方式

简单介绍一下斐波那契数列

又称黄金分割数列,因数学家莱昂纳多·斐波那契(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)#这是一个死循环哦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值