C语言高手进 答好有加分!

问个简单问题,#defineMAX100#include"stdio.h"main(){intf[MAX],i,j,k=2,m=5;for(i=0;i<=m;i++)f[... 问个简单问题,
#define MAX 100
#include"stdio.h"
main()
{
int f[MAX],i,j,k=2,m=5;
for(i=0;i<=m;i++) f[i]=1;f[k-1]=2;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++) f[i]+=f{j};
printf("%d%5d%5d\n",k,m,f[m]);
}
这个的结果是 2,5,20 对么 给出运行的详细过程, 谢谢了 答好有加分,放心答吧
展开
 我来答
白马相思白发生b
2010-07-01 · TA获得超过1751个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:899万
展开全部
int f[MAX],i,j,k=2,m=5;
//循环给出f[i]的值,f[0]到f[m]都是1,f[2-1]=2,也就是f[5]={1,2,1,1,1,1}
for(i=0;i<=m;i++) f[i]=1;f[k-1]=2;
//for(i=2;i<=5;i++) for(j=i-2;j<=i-1;j++) f[i]+=f[j]
//内循环就是j=i-2,现在f[i]=f[i]+f[i-2];j=i-1,现在f[i]=f[i]+f[i-2]+f[i+1]所以,这个 for(j=i-2;j<=i-1;j++)就是
//每个f[i]等于它自己加上他前面两个数之和,数列{1,2,1,1,1,1}这样运算后就是{1,2,4,7,12,20}所以f[m]=f[5]=20
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++) f[i]+=f[j];
printf("%d%5d%5d\n",k,m,f[m]);
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式