斐波那契数列(Fibonacci sequence),又称递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。
1 # __Author__Panda-J____ 2 def fib(max): 3 n,a,b=0,0,1 4 while n<max: 5 print(b) 6 a,b=b,a+b#相当于tuple=(b,a+b),a=tuple[0],b=tuple[1] 7 n+=1 8 return 'done' 9 10 11 print(fib(10))
此时的数列全部生成并存在内存中。
如果想使用生成器,可以实现使用一个数生成一个,这也是Generator的一个优点:节约内存,可即时响应。(百万量级的时候尤为明显)
方法为:
print(b)--->yield(b)
完整程序为:
1 # __Author__Panda-J____ 2 def fib(max): 3 n,a,b=0,0,1 4 while n<max: 5 yield (b) 6 a,b=b,a+b#相当于tuple=(b,a+b),a=tuple[0],b=tuple[1] 7 n+=1 8 return 'done' 9 10 11 f=fib(10) 12 print(f.__next__()) 13 print("-------divided------") 14 print(f.__next__()) 15 print(f.__next__()) 16 print("==========") 17 for i in range(5): 18 print(f.__next__())