3个回答
展开全部
1就不会执行循环,直接返回1哈
double fun(int m)
{
double y=1;
int i;
for(i=2;i<=m;i=i+2)
{
double n=1;
for(int j=1;j<=i;j++)
{
n=n*j;
}
y+=1/n;
}
return y;
}
double fun(int m)
{
double y=1;
int i;
for(i=2;i<=m;i=i+2)
{
double n=1;
for(int j=1;j<=i;j++)
{
n=n*j;
}
y+=1/n;
}
return y;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
double y = 0;
for ( int i = 2; i <= m; i+2)
{
y+=1/i!;
}
for ( int i = 2; i <= m; i+2)
{
y+=1/i!;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
float fun(float m)
{
float sum=1,i,y=0;
for(i=2;i<=m;i++)
sum*=i; //这里是求m!
while(m!=0)
{
y+=1/sum;
sum=sum/(m)/(m-1);
m-=2;
}
return y;
}
讲解一下,求m!那里应该能看得懂吧,我就不多说了。。。。
从while循环那里开始,我是进行倒退计算,每次运行y+=1/sum,循环m次,就表示y=1/m!+...+1/4!+1/2!
根据你给的公式,m比前一个数大2,所以每次m都自减2,这样就能达到上面那条倒退计算的目的了。。。。
然后就是sum=sum/(m)/(m-1),你会发觉4!比2!多乘了3和4,也就是说2!等于4!除去4再除去3。。。。
那m!的阶乘比(m-2)!的阶乘要大多少呢,当然就是多乘了m和m-1了,这里的sum表示的是m!,这样的话就能很容易地得到下一个数的阶乘了。。。。
其实算法不难想,你拿张纸,一步一步的画出来,那就很容易找到思路了。。。。
{
float sum=1,i,y=0;
for(i=2;i<=m;i++)
sum*=i; //这里是求m!
while(m!=0)
{
y+=1/sum;
sum=sum/(m)/(m-1);
m-=2;
}
return y;
}
讲解一下,求m!那里应该能看得懂吧,我就不多说了。。。。
从while循环那里开始,我是进行倒退计算,每次运行y+=1/sum,循环m次,就表示y=1/m!+...+1/4!+1/2!
根据你给的公式,m比前一个数大2,所以每次m都自减2,这样就能达到上面那条倒退计算的目的了。。。。
然后就是sum=sum/(m)/(m-1),你会发觉4!比2!多乘了3和4,也就是说2!等于4!除去4再除去3。。。。
那m!的阶乘比(m-2)!的阶乘要大多少呢,当然就是多乘了m和m-1了,这里的sum表示的是m!,这样的话就能很容易地得到下一个数的阶乘了。。。。
其实算法不难想,你拿张纸,一步一步的画出来,那就很容易找到思路了。。。。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询