标题:k阶斐波那契数列
取消只看楼主
康明贤
Rank: 2
来 自:NWPU
等 级:论坛游民
帖 子:46
专家分:32
注 册:2017-10-23
结帖率:75%
已结贴  问题点数:20 回复次数:1 
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))。
Input

输入常数max(0<max<10000),阶数k(1<k<100),用空格隔开。
Output

输出k阶斐波那契数列中的最后k项f(n-k+1),…,f(n)。

C语言
搜索更多相关主题的帖子: 斐波那契 数列 循环 队列 max 
2018-05-10 15:59
康明贤
Rank: 2
来 自:NWPU
等 级:论坛游民
帖 子:46
专家分:32
注 册:2017-10-23
得分:0 
回复 2楼 自学的数学
万分感谢。 #include <stdio.h>
#include <stdlib.h>

typedef struct node
{
    int *data;
    int front;
    int real;
    int k;
}queue;

void create(queue *s,int n,int m)
{
    int sum,i;
    s->data=(int *)malloc(n*sizeof(int));
    s->k=n;
    s->front=0;
    s->real=s->front;
    for(i=0;i<n-1;i++)
        s->data[s->real++]=0;
    s->data[s->real]=1;
    while(1)
    {
        s->real++;
        if((s->real)%s->k==s->front)
            s->real=s->front;
        sum=0;
        for(i=0;i<n;i++)
            sum+=s->data[i];
            if(sum>m)
                break;
            else
                s->data[s->real]=sum;
    }
    for(i=0;i<n;i++)
    {
        if((s->real)%s->k==s->front)
            s->real=s->front;
        printf("%d ",s->data[s->real++]);
    }
}

int main()
{
    queue *s;
    int n,m;
    s=(queue *)malloc(sizeof(queue));
    scanf("%d %d",&m,&n);
    create(s,n,m);
    return 0;
}这是我同学写的,可以看看。

千里之行,始于足下。
2018-05-11 19:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486817-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.307666 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved