?? k階斐波那契數列的兩種實現--寂寞的囈語.txt
字號:
K階斐波那契數列的兩種實現--寂寞的囈語首頁 | 博客群 | 公社 | 專欄 | 論壇 | 圖片 | 資訊 | 注冊 | 幫助 | 博客聯播 | 隨機訪問
寂寞的囈語[轉貼]人生若只如初見- -| 回首頁 | 2005年索引 | - -約瑟夫環問題
K階斐波那契數列的兩種實現
關鍵詞: 斐波那契
/*******************************************************************************/
/*斐波那契數列來自于斐波那契的一個計算兔子數量的數學題 */
/*K階斐波那契數列的前K-1項均為0,第k項為1,以后的每一項都是前K項的和 */
/*試利用循環隊列編寫求k階斐波那契序列中前n+1項(f0, f1 , f2 ,… fn )的程序 */
/*要求滿足f(n) ≤max而f(n+1) >max ,其中max為某個約定的常數。 */
/*注意本題所用循環隊列的容量僅為k,則在算法執行結束時,留在循環隊列中的元素應是 */
/*k階斐波那契序列中的最后k項fn-k+1 ,… fn ) . */
/*作者:想飛翔的魚 likefrank@163.com 整理于2005.07.28 */
/*******************************************************************************/
#include
#include
#define enoughsize 100
typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
int AddSum(int n,int *q)
{
int sum=0;
int i;
for(i=0;i sum+=q[i];
return sum;
}
void main()
{
SqQueue Q;
int k,max,i,n,*store;
printf("請輸入此斐波那契的階數:");
scanf("%d",&k);
printf("請輸入邊界數:");
scanf("%d",&max);
Q.base=(int*)malloc(k*sizeof(int));
store=(int*)malloc(enoughsize*sizeof(int));
if((!Q.base)||(!store))
{
printf("Error!");
return;
}
for(i=0;i {
store[i]=0;
Q.base[i]=0;
}
store[k-1]=1;
Q.base[k-1]=1;
store[k]=AddSum(k,Q.base);
Q.front=0;
Q.rear=k-1;
n=k;
while(store[n]<=max)
{
Q.rear=(Q.rear+1)%k;
Q.base[Q.rear]=store[n];
n++;
store[n]=AddSum(k,Q.base);
}
printf("The first %d%s%d%c%s",n," numbers are less than ",max,'.',"\n");
printf("The numbers are:\n");
for(i=0;i printf("%d%c",store[i],' ');
printf("\n");
}
/*******************************************************************************/
/*斐波那契數列來自于斐波那契的一個計算兔子數量的數學題 */
/*K階斐波那契數列的前K-1項均為0,第k項為1,以后的每一項都是前K項的和 */
/*試利用循環隊列編寫求k階斐波那契序列中前n+1項(f0, f1 , f2 ,… fn )的程序 */
/*要求滿足f(n) ≤max而f(n+1) >max ,其中max為某個約定的常數。 */
/*請利用公式f(i+1) = 2*f(i) - f(i-k),隊列的容量為k+1
/*作者:想飛翔的魚 likefrank@163.com 整理于2005.07.28 */
/*******************************************************************************/
#include
#include
#define enoughsize 100
typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
void main()
{
SqQueue Q;
int k,max,i,n,*store;
printf("請輸入此斐波那契的階數:");
scanf("%d",&k);
printf("請輸入邊界數:");
scanf("%d",&max);
Q.base=(int*)malloc((k+1)*sizeof(int));
store=(int*)malloc(enoughsize*sizeof(int));
if((!Q.base)||(!store))
{
printf("Error!");
return;
}
for(i=0;i store[i]=Q.base[i]=0;
store[k]=store[k-1]=1;
Q.base[k]=Q.base[k-1]=1;
store[k+1]=2*Q.base[k]-Q.base[0];
Q.front=0;
Q.rear=k;
n=k+1;
while(store[n]<=max)
{
Q.rear=(Q.rear+1)%(k+1);
Q.base[Q.rear]=store[n];
n++;
store[n]=2*store[n-1]-store[n-1-k];
}
printf("The first %d%s%d%c%s",n," numbers are less than ",max,'.',"\n");
printf("The numbers are:\n");
for(i=0;i&nbs; printf("%d%c",store[i],' ');
printf("\n");
}
【作者: 想飛翔的魚】【訪問統計:639】【2005年07月28日 星期四 22:18】【注冊】【打印】 Google Adsense
淘寶進口護膚品網絡實體店
英美體小鋪契爾氏瑰珀翠韓國B.B霜嬋真 日本SANA豆乳大米JUJU玻尿臺灣牛爾等
shop33136743.taobao.com卡勒幅磁共振 數字新影像
上海卡勒幅專業從事mri的生產 研發和銷售.咨詢電話:021-57858407
www.cmr-tek.com算法分析 免費 下載
海量算法分析資料 ,免費注冊與下載 快來免費下載吧!
www.stuccess.com
搜索
Trackback
你可以使用這個鏈接引用該篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=2417296
回復
- 評論人:Summer 2007-10-02 14:21:06
謝謝你的算法,收藏研究一下
發布人:郵箱:
主 頁:
驗證碼:
評論內容:
2003-2004 BOKEE.COM All rights reserved
Powered by BlogDriver 2.1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -