迴圈佇列實現K階斐波那契數列求值

2021-08-18 04:19:49 字數 787 閱讀 9749

k階斐波那契數列:數列第1項到第k-1項為0,第k項為1,之後從第(k+1)項開始每一項為前k項之和。

定義結構體中front指示隊頭位置,rear指示隊尾位置,初始空隊時q->front = q->rear = 0,隊滿時(q->rear + 1) % q->k = q->front,即頭尾指標指向同一位置。若佇列未滿時,新元素入隊將尾指標後移一位;若佇列不為空時,出隊時將頭指標後移一位。詳細介紹參考部落格:資料結構 | 迴圈佇列(基本操作及圖示)

因此,使用迴圈佇列實現k階斐波那契數列求值時,先定義乙個容量為k(k為階數)的迴圈佇列,將第1項至第k-1項為0、第k項為1加入佇列,之後每次對隊內元素求和將其值加入佇列,隨後將隊頂元素出隊,直至隊內剩下序列中最後k項。

typedef struct queue;

queue* initqueue(int k)

void enqueue(queue *q, int item)

// 移動尾指標加入佇列

else

}void dequeue(queue *q)

// 移動頭指標出隊

else

}// 求佇列中元素之和

int sumqueue(queue *q)

return sum;

}/*k階斐波那契數列:數列第1項到第k-1項為0,第k項為1,之後從第(k+1)項開始每一項為前k項之和。*/

void fibonacci(int k, int max)

while(num <= max)

}

k階斐波那契數列

試利用迴圈佇列編寫k 階斐波那契數列中前 n 1項 f 0 f 1 f n 的程式,要求滿足 f n max而f n 1 max,其中max 為某個約定的常數。注意 本題所用迴圈佇列的容量僅為k 則在程式執行結束時,留在迴圈佇列中的元素應是所求k 階斐波那契序列中的最後k項 f n k 1 f n ...

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...

求斐波那契數列

一 用陣列求取斐波那契數列第n項的數值 非遞迴 斐波那契數列求取思想 第n項 第n 1項 第n 2項 function getvalue n var j 0 while j n 1 return arr j else alert getvalue 8 求第八項的值 二 使用遞迴求取第n項的值 fun...