问题描述 :
已知k阶裴波那契数列的定义为f0=0,f1=0,…,fk-2=0, fk-1=1; fn=fn-1+fn-2+…+fn-k,n=k,k+1,…,试编写求k阶裴波那契数列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。
实现代码 :
#include<stdio.h>
#define MAXSIZE 100
int main()
{
int a[MAXSIZE];
int k, m;
printf("k = ");
scanf("%d",&k);
printf("m = ");
scanf("%d",&m);
int i ;
// 因为是k阶所以数组前面k-1个值为0 :
for(i = 0; i < k-1; i++)
{
a[i] = 0;
}
a[k-1] = 1;
a[k] = 1;
int n = k+1;
while(a[n-1] <= m)
{
a[n] = 2*a[n-1]-a[n-k-1];
n++;
}
printf("a[%d] = ",n-2);
printf("%d\n",a[n-2]);
return 0;
}