利用Python編寫的Fibonacci數列,用到了邏輯推導式,必用迭代方法,跟大家分享
(一)
# 節省數據存放的空間(需要準備大量的數據,用於計算)
import time
class Fibonacci(object):
def __init__(self,max = 10):
self.current_num = 0
self.max = max
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.current_num < self.max:
ret = self.a
#self.a,self.b = self.b,self.a + self.b 就是抄逗號前部等於襲等號後面百的度第一個(知self.a = self.b),逗號後面一道個等於等號後面的最後一個(self.b = self.a + self.b).
#self.a = self.b,self.b = self.a+self.b;x,y =self.a,self.a+self.b
self.a, self.b = self.b,self.a+self.b
self.current_num += 1
return ret
else:
self.current_num = 0
self.a = 0
self.b = 1
raise StopIteration
f1 = Fibonacci(100)
for temp in f1:
print(temp)
time.sleep(0.1)
運行效果:
(二)
def fab(num):
a ,b=0, 1
current_num = 0
while True:
if current_num < num:
#print(a)
yield a #碰到了yield相當於一個斷點並返回,再次遍歷或者使用next不會從函數開頭執行,
#從yield位置繼續執行,直到碰到yield又一次斷點斷開
a ,b = b , a+b
current_num += 1
else:
break
f1 = fab(8)
for temp in f1:
print(temp)
運行效果;