python-用程式碼實現佇列,處理斐波那契數列
阿新 • • 發佈:2022-03-20
佇列在進行資料操作時必須遵循“先進先出(Firstin Firstout,FIFO)”的原則,這一特點決定了佇列的基本操作需要在其兩端進行
佇列(Queue)的基本操作通常在佇列的兩端被執行,其中執行插入元素操作的一端被稱為隊尾(rear);執行刪除元素操作的一端被稱為隊頭(front)。
class Q: def __init__(self): self.maxQSize=10 self.s=[None for x in range(self.maxQSize)] self.front=0 self.rear=0 def IsEmptyQ(self): if self.front == self.rear: result=True else: result = False return result def EnQ(self,x): if (self.rear < self.maxQSize-1): self.s[self.rear]=x self.rear += 1 print(f"進佇列{self.rear}:{x}") else: return def DeQ(self): if self.IsEmptyQ(): print("佇列空") else: deq= self.s[self.front] self.front +=1 return deq def GetHead(self): if self.IsEmptyQ(): print("佇列空") else: return self.s[self.front] """ 先將當前月份的初始值設定為1,起始的小兔總數(隊頭元素)和第一個月的小兔總數(隊尾元素)依次放入佇列中, 此時的隊尾元素即為當前月份的小兔總數。 """ def Fibonacci(n): qu=Q() qu.EnQ(1) qu.EnQ(1) start=0 while start < n-2: numHead = qu.DeQ() numRear = qu.GetHead() qu.EnQ(numHead + numRear) start +=1 return qu.s[qu.rear-1] print(Fibonacci(5))