#include "stdio.h"
int fib(int k,int m,int *f)
{
int temp[100],i,j;
if(k<2||m<0) return 0;
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];
printf("\nf[%d]=%d",i,temp[i]);
}
*f=temp[m];
}
return 1;
}
main()
{
int k,m,f;
printf("Please input k and m:");
scanf("%d,%d",&k,&m);
fib(k,m,&f);
printf("\nk=%d,m=%d,f=%d",k,m,f);
请帮我逐行解释一下 ,谢谢~~~
C++ 高手进 n阶费波拉且数列
答案:1 悬赏:10 手机版
解决时间 2021-04-12 10:23
- 提问者网友:练爱
- 2021-04-11 18:13
最佳答案
- 五星知识达人网友:一秋
- 2021-04-11 19:39
#include "stdio.h"
int fib(int k,int m,int *f) //一个带返回int型的函数
{
int temp[100],i,j; //定义
if(k<2||m<0) return 0; //如果k<2或是m<0 则fib函数返回0
if(m<k-1) *f=0; //如果m<k-1时,那么*f=0; 注:在该函数头接收的是int *f形式即地址,现在*f表f地址中存的值为0
else //如果以上条件均不满足 执行下面if语句
if (m==k-1 || m==k) *f=1; //如果m与k-1相等或是m与k相等时执行f存的值为1
else //如果上面条件不满足则执行下面{....}中的内容
{
for(i=0;i<=k-2;i++) //i从0循环到k-2,每循环一次i=i+1
temp[i]=0; //将0赋给temp数组,其下标决定不同变量
temp[k-1]=1;//将1赋,同上
temp[k]=1;//将1赋,同上
j=0;
for(i=k+1;i<=m;i++,j++)//i的初值为i=k+1; i从k+1循环到m,每循环一次i=i+1,j=j+1
{
temp[i]=2*temp[i-1]-temp[j]; //等式赋予
printf("\nf[%d]=%d",i,temp[i]);//输出i,temp[i]中的值
}
*f=temp[m]; //赋值为tem[m]
}
return 1; //该fib函数返回1
}
main()
{
int k,m,f; //定义
printf("Please input k and m:"); //输出""中的该字符串
scanf("%d,%d",&k,&m); //输入k和m,注:k与m用逗号隔开
fib(k,m,&f); //调用fib函数并传参k,m,及&f. &符号表取地址符,&f表示该f的地址。
printf("\nk=%d,m=%d,f=%d",k,m,f);//输出k,m,f
}
int fib(int k,int m,int *f) //一个带返回int型的函数
{
int temp[100],i,j; //定义
if(k<2||m<0) return 0; //如果k<2或是m<0 则fib函数返回0
if(m<k-1) *f=0; //如果m<k-1时,那么*f=0; 注:在该函数头接收的是int *f形式即地址,现在*f表f地址中存的值为0
else //如果以上条件均不满足 执行下面if语句
if (m==k-1 || m==k) *f=1; //如果m与k-1相等或是m与k相等时执行f存的值为1
else //如果上面条件不满足则执行下面{....}中的内容
{
for(i=0;i<=k-2;i++) //i从0循环到k-2,每循环一次i=i+1
temp[i]=0; //将0赋给temp数组,其下标决定不同变量
temp[k-1]=1;//将1赋,同上
temp[k]=1;//将1赋,同上
j=0;
for(i=k+1;i<=m;i++,j++)//i的初值为i=k+1; i从k+1循环到m,每循环一次i=i+1,j=j+1
{
temp[i]=2*temp[i-1]-temp[j]; //等式赋予
printf("\nf[%d]=%d",i,temp[i]);//输出i,temp[i]中的值
}
*f=temp[m]; //赋值为tem[m]
}
return 1; //该fib函数返回1
}
main()
{
int k,m,f; //定义
printf("Please input k and m:"); //输出""中的该字符串
scanf("%d,%d",&k,&m); //输入k和m,注:k与m用逗号隔开
fib(k,m,&f); //调用fib函数并传参k,m,及&f. &符号表取地址符,&f表示该f的地址。
printf("\nk=%d,m=%d,f=%d",k,m,f);//输出k,m,f
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯