斐波那契数列(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。