C语言编程求助 数列: E(1)=E(2)=1 E(n)=(n-1)*E(n-1)+(n-2)*E(n-2) (n>2)
答案:2 悬赏:30 手机版
解决时间 2021-11-26 13:29
- 提问者网友:我的未来我做主
- 2021-11-26 01:37
C语言编程求助 数列: E(1)=E(2)=1 E(n)=(n-1)*E(n-1)+(n-2)*E(n-2) (n>2)
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-11-26 01:58
冲内存了,你的数组就300个,你循环30000-3+1次,出界出的十万八千里了
for的那句改成for(i=3;i<300;i++)
还有最后一句,输出格式不对,整形要用整形的格式:printf("%d\n",count);追问可是他要求[1,30000]之内E数的个数啊,for不应该是i从3到30000么?追答你数组定义长度只有300个单元,,你想想e[30000]这个地址已经超到哪里了?
求1-30000之间,那你的算法就有问题,根据E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这个公式,不必要去用数组去记录所有,你只要记录前面2项就足够参加运算了追问我不是特别懂,刚入门。。那具体要怎么改?追答具体要怎么做,就要知道E数列是什么回事,这个你要先告诉我才能帮你。不知道E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这句是判断条件还是计算公式?在你的程序里面,我其实没看到任何判断,也就是说你循环了多少次,count就是多少,这个肯定是不对的具体要怎么做,就要知道E数列是什么回事,这个你要先告诉我才能帮你。不知道E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这句是判断条件还是计算公式?在你的程序里面,我其实没看到任何判断,也就是说你循环了多少次,count就是多少,这个肯定是不对的追问我以为E(n)=..他是FOR循环的复合语序。然后每执行完一个E(n)就count+1,到循环结束
意思是需要加一个判断条件?像这样?
main()
{int i,count=0;
double e[30000]={1,1,1};
for(i=3;i<=30000;i++)
{if(e[i]=(i-1)*e[i-1]+(i-2)*e[i-2])
count++;}
for的那句改成for(i=3;i<300;i++)
还有最后一句,输出格式不对,整形要用整形的格式:printf("%d\n",count);追问可是他要求[1,30000]之内E数的个数啊,for不应该是i从3到30000么?追答你数组定义长度只有300个单元,,你想想e[30000]这个地址已经超到哪里了?
求1-30000之间,那你的算法就有问题,根据E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这个公式,不必要去用数组去记录所有,你只要记录前面2项就足够参加运算了追问我不是特别懂,刚入门。。那具体要怎么改?追答具体要怎么做,就要知道E数列是什么回事,这个你要先告诉我才能帮你。不知道E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这句是判断条件还是计算公式?在你的程序里面,我其实没看到任何判断,也就是说你循环了多少次,count就是多少,这个肯定是不对的具体要怎么做,就要知道E数列是什么回事,这个你要先告诉我才能帮你。不知道E(n)=(n-1)*E(n-1)+(n-2)*E(n-2)
这句是判断条件还是计算公式?在你的程序里面,我其实没看到任何判断,也就是说你循环了多少次,count就是多少,这个肯定是不对的追问我以为E(n)=..他是FOR循环的复合语序。然后每执行完一个E(n)就count+1,到循环结束
意思是需要加一个判断条件?像这样?
main()
{int i,count=0;
double e[30000]={1,1,1};
for(i=3;i<=30000;i++)
{if(e[i]=(i-1)*e[i-1]+(i-2)*e[i-2])
count++;}
全部回答
- 1楼网友:何以畏孤独
- 2021-11-26 02:43
修改后的代码:
#include
int main()
{
int i,count=2; // 先把E(1)和E(2)算上
double e[300]={1,1,1};
for(i=3;i<300;i++)
{
e[i]=(i-1)*e[i-1]+(i-2)*e[i-2];
if(e[i]>=1&&e[i]<=30000)
{
count++;
}
else
{
break;
}
}
printf("%d\n",count);
return 0;
}
#include
int main()
{
int i,count=2; // 先把E(1)和E(2)算上
double e[300]={1,1,1};
for(i=3;i<300;i++)
{
e[i]=(i-1)*e[i-1]+(i-2)*e[i-2];
if(e[i]>=1&&e[i]<=30000)
{
count++;
}
else
{
break;
}
}
printf("%d\n",count);
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯