python实现斐波那契数列

2021-04-08 01:27

阅读:625

标签:port   app   ati   nis   class   写法   last   lan   roc   

首先想到的是用递归来解决

求100内的斐波那契数列:

def diGui(num=100):
    a,b = 0,1
    # 为了方便看打印,我就用list存一下
    lit = []
    while a 

递归是比较容易解决,但是这个对内存很不友好,要是后面求10000,100000,甚至更大的呢!

所以就想到可以用python的生成器,如果一个函数中有yield关键字,那他就是一个生成器(generator).

import sys
# 这里其实和上面的递归写法很类似,只需要把print(a)换成yeild就行
def generator(num=100):
    a,b = 0,1
    while a 
g = generator()
print(type(g))
# 然后我调用next()方法取值
while True:
    print(next(g))
    
# 重复调用next()方法,但是这里会抛异常,因为重复调用next()方法,直到结束 
Traceback (most recent call last):
  File "D:/xxxxxxx.py", line 60, in 
    print(next(g))
StopIteration

0
1
1
2
3
5
8
13
21
34
55
89

Process finished with exit code 1
# 所以我们可以try一下,捕获它,让程序正常结束
while True:
    try:
        # print(next(g))
        n = next(g)
        if n 

python实现斐波那契数列

标签:port   app   ati   nis   class   写法   last   lan   roc   

原文地址:https://www.cnblogs.com/coker/p/13379961.html


评论


亲,登录后才可以留言!