k阶斐不那契序列
f(0)=0,f(1)=0, ...,f(k-2)=0,f(k-1)=1;
f(n)=f(n-1)+f(n-2)+....+f(n-k),n=k,k+1,...
求k阶第m项值的函数算法
include <iostream>
using namespace std;
int fib(int k,int m)
{
int f,i,j;
int *temp=new int[m];
if(k<2||m<0) return -1;
if(m<k-1) f=0;
else if (m==k-1 || m==k) f=1;
else
{
for(i=0;i<=k-2;i++) temp[i]=0;
temp[k-1]=1;temp[k]=1;
j=0;
for(i=k+1;i<=m;i++,j++)
temp[i]=2*temp[i-1]-temp[j];
f=temp[m];
}
return f;
}
int main()
{
int k,m;
cin >>k>>m;
cout <<fib(k,m);
return 0;
}
temp不是从0到m-1么,怎么temp[m]也可以得到结果?