编写函数fun其功能是,根据整型形参m,计算如下公式,y=1⼀2!+1⼀4!+1⼀m!...

急要1!怎么处理
2024-11-02 00:11:48
推荐回答(3个)
回答(1):

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;
}

回答(2):

double y = 0;
for ( int i = 2; i <= m; i+2)
{
y+=1/i!;
}

回答(3):

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!,这样的话就能很容易地得到下一个数的阶乘了。。。。

其实算法不难想,你拿张纸,一步一步的画出来,那就很容易找到思路了。。。。