已知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项值的函数算法,k和m均以参数的形式在参量表中出现。
采用递归的方法实现。
#include<iostream>
using namespace std;
int k_fib(int k, int m)
{
//求k阶斐波那契数列的第m项值
int f;
if (m < k - 1)
f = 0;
else
if (m == k - 1)
f = 1;
else {
f = 0;
for (int j = 1; j <= k; j++)
f = f + k_fib(k, m - j);
}
return f;
}
void main()
{
int i, j, fib;
cout << "请输入斐波那契数列的阶数和项的序号:";
cin >> i >> j;
fib = k_fib(i, j);
cout << i << "斐波那契数列的第" << j << "项值为:" << fib << endl;
}