#include<stdio.h>
#include<stdlib.h>
#define Size 3
void Fib(int m, int n)//输出斐波那契数列的第m项到第n项
{
long long S[Size];//辅助数组
long long P[n-m+1];//记录斐波那契数列的第m项到第n项
int j=0;//P数组的计数变量
S[0]=S[1]=1;//预置数列前两项为1
int i=3;//计数变量
S[2]=2;
if(m==1)//从第一项开始输出, 至少要输出前两项
{
P[j++]=1;
P[j++]=1;
}
else if(m==2)//从第二项开始输出, 将斐波那契数列的第二项存入记录数组P中
{
P[j++]=1;
}
while(i<=n)//从第三项开始计算, 一直到第n项
{
if(i>=m)//从第m项开始记录数列元素
P[j++]=S[2];
//数据更新
S[0]=S[1];
S[1]=S[2];
S[2]=S[1]+S[0];
//
i++;
//printf("1 ");//调试语句
}
//至此, P数组已记录下斐波那契数列的第m项到第n项
//P数组共有n-m+1个元素, 其下标上限为n-m
j=n-m;
while(j>=0)
{
if(j!=0)
{
printf("%lld ", P[j]);
}
else
{
printf("%lld", P[j]);
}
j--;
}
printf("\n");
return ;
}
int main()
{
int m ,n;
scanf("%d%d", &m, &n);//输入开始项数m和终止项数n
if(m<=0||n<=0)//数据不合法
{
printf("error!\n");
}
else if(m>n)
{
Fib(n, m);
}
else if(m<n)
{
Fib(m, n);
}
else//数据不合法
{
printf("error!\n");
}
return 0;
}