⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 k阶斐波那契数列的两种实现--寂寞的呓语.txt

📁 K阶斐波那契数列的前K-1项均为0,第k项为1,以后的每一项都是前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 + -