🎈数据结构
🎈☀️☀️第一章
🎈☀️☀️💡💡💡k阶m项斐波那契数
已知k阶斐波那契序列的定义为


试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现
- //递归方法实现
- int f(int k,int m){
- int i,tmp;
- if (m
-1){ - return 0;
- }
- else if(m==k-1){
- return 1;
- }
- else{
- for(i = 1,tmp = 0;i<=k;i++){
- tmp+=f(k,m-i);
- // cout<
- }
- return tmp;
- }
- }
-
- int main(){
- int k,m;
- while(cin>>k>>m){
- cout<<f(k,m-1);
- }
- }
输出检验:

- //非递归方法实现
- # define maxsize 100000
-
- int f(int k,int m){
- int a[maxsize],j;
- a[k-1] = 1;
- int t = k;
- if(m>=k){
- while(t<=m){
- for(j = t-1,a[t] = 0;j>=t-k;j--){
- a[t]+=a[j];
- }
- if(t == m){
- return a[t];
- }else{
- t++;
- }
- }
- }else{
- return a[m];
- }
- }
-
- int main(){
- int k,m;
- while(cin>>k>>m){
- cout<<f(k,m);
- }
- }
输出检验:
