哪有什么岁月静好,不过是有人替你负重前行!

斐波拉契数列

著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

斐波拉契数列用列表生成式写不出来,但是,用函数把它打印出来却很容易:

def fib(max):
    a,b,c = 0,1,1
    while a < max:
        print (b)
        b,c = c,b+c
        a = a + 1
fib(10)

上面代码执结果为:

1
1
2
3
5
8
13
21
34
55

要把fib函数变成generator,只需要把print(b)改为yield b就可以了:

def fib(max):
    a,b,c = 0,1,1
    while a < max:
        #print (b)
        yield  b
        b,c = c,b+c
        a = a + 1
fib(10)
n = fib(10)
m=next(n)
l=next(n)
h=next(n)
i=next(n)
j=next(n)
print(m,l,h,i,j)

上面代码执结果为:1 1 2 3 5

 

posted @ 2021-09-14 17:44  longfei825  阅读(143)  评论(0)    收藏  举报