用c语言求s=1⼀1!+1⼀2!+1⼀3!+1⼀4!+1⼀5! 要用到函数的嵌套调用 记得看清楚 是1除以阶层

2025-03-07 01:24:29
推荐回答(3个)
回答1:

直接算 1/1!+1/2!+1/3!+1/4!+1/5!,会有5次除法,精度无法保证。

应该做如下转换
s=1/1!+1/2!+1/3!+1/4!+1/5!=(1/1!+1/2!+1/3!+1/4!+1/5!)*5!/5!=(5!/1!+5!/2!+5!/3!+5!/4!+5!/5!)/5!=(P(5,4)+P(5,3)+P(5,2)+P(5,1)+P(5,0))/5!

其中P(n,m)=n!/(n-m)!=n*(n-1)*...*(n-m+1)
这样转换后只有一次除法,精度更高。

回答2:

很简单,自己做吧。有什么问题可以提出来,不过不要让我们全权代劳。

回答3:

#include

int fac(int n)
{
int m=1;
for(int i=1; i<=n; i++)
m=m*i;
return m;
}

int sum(int d)
{
double s=0;
for(int i=1; i<=d; i++)
s=s+1.0/fac(i); //1.0是为了转换成double类型
return s;
}

int main()
{
double s;
s=sum(5);
printf("s=%f", s);
return 0;
}