074.K阶斐波那契序列

简介: 074.K阶斐波那契序列
#include <stdio.h>
#include <stdlib.h>
#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<n;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<k;i++)
  {
    store[i]=0;
    Q.base[i]=0;
  }
  store[k-1]=1;
  Q.base[k-1]=1;   //初始化fib序列
  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<n;i++)  printf("%d%c",store[i],' ');
  printf("\n");
}
相关文章
|
算法
【算法专题突破】二分查找 - x 的平方根(18)
【算法专题突破】二分查找 - x 的平方根(18)
70 0
|
4月前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根
|
6月前
|
机器学习/深度学习 存储 人工智能
每日练习之矩阵乘法——斐波那契公约数
每日练习之矩阵乘法——斐波那契公约数
44 0
迭代法解决递推问题:数列和,sinx,ex的近似值
迭代法解决递推问题:数列和,sinx,ex的近似值
120 0
|
C++ 容器
求解子序列
求解子序列
66 0
|
人工智能 算法
有序数组的平方
有序数组的平方
|
算法
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
104 0
【递归与递推 3】AcWing 717. 简单斐波那契(求解斐波那契数列的若干方法)
|
机器学习/深度学习 算法
斐波拉契数列的递推递归求解算法
斐波拉契数列的递推递归求解算法
116 0
|
算法
Day2—— 59.螺旋矩阵 977.有序数组的平方
Day2—— 59.螺旋矩阵 977.有序数组的平方
74 0
|
机器学习/深度学习 算法
两个序列的中位数(双指针)
两个序列的中位数(双指针)
207 0