#include <IOSTREAM>
#include <VECTOR>
using namespace std;
int Fibonacci(int k,int m);
int main()
{
int m,k;
cout<<"k阶斐波那契"<<" ";
cin>>k;
cout<<"第m项为"<<" ";
cin>>m;
cout<<"结果是"<<endl;
cout<<Fibonacci(k,m);
cout<<endl ;
return 0;
}
//k阶斐波那契数列,下标为m的项(从0开始)
int Fibonacci(int k,int m)
{
int temp = 0 ,pos = 0; //每次计算和暂存
if (k < 2)
{
cout<<"K输入不符合要求"<<endl;
return -1;
}
vector<int> fbarray; //容器存储数列,为后文计算
for(int i = 0 ; i<k-1 ;++i)
fbarray.push_back(0); //初始前k-1项(0->...->k-2)全部为0
fbarray.push_back(1);
if (m < k-1)
return 0 ;
if (m == k-1)
return 1 ;
for(i = 0 ;i< m-(k-1); ++i)
{
temp = 0;
for (int j = 0 ;j<fbarray.size() ; ++j)
temp += fbarray[j];
pos = i%k ;
fbarray[pos] = temp ;
}
return temp ;
}
习题集1.17
最新推荐文章于 2022-04-14 23:33:11 发布