斐波那契数列

斐波那契数列(Fibonacci sequence)指的是这样一个数列:1、1、2、3、5、8、13、21、34、55、89...,除了前两个数,数列中的每一项都等于前两项之和。

用函数可以轻松的实现这个数列:

def fib(max):
    a,b,c = 0,0,1
    while a < max:
        print(c)
        b, c = c, c+b   #相当于1.t = c+b   2.b = c   3.c = t 从右往左
        a += 1
fib(25)           #显示25位的斐波那契数列

此程序的返回值为None,无法被其他函数调用,所以这个代码还可以进行一下优化:

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

for i in fib(25):
    print(i)

此处用了一个yield方法,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(25) 不会执行 fab 函数,而是返回一个 iterable 对象。for循环执行时,执行到 yield c 时都会返回一个c的值并退出执行下一次循环,在循环继续时从yield c的下一句开始执行,直到再次碰到yield c。

原文地址:https://www.cnblogs.com/sunj-96/p/10665397.html