但丁地狱攻略:请问用C语言,怎么解决这个算术问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/26 06:38:25
1、 计算如下公式的值:y=1+1/2!+1/3!+1/4!+...+1/m!。
(例如:若m=6,则应输出:1.71805)。
要求m=10。

long jicheng(long a)
{
if (a==1)
return 1;
else
return (a*jicheng(a-1));
}
double chu (int i)
{
return (1.0/((double)(jicheng(i))));
}
main()
{
int m;
int i;
double s=0;
printf("m:");
scanf ("%u",&m);
for (i=m;i>0;i--)
s = s+chu(i);
printf ("%f\n",s);
system("PAUSE");
}

看这个问题是谁问的,如果是去面试的时候别人要求你考虑性能的话,答案很简单,就是你把 1 - 10 的阶乘全算出来,然后直接相除相加.

如果是自己做,可以用双重循环。

float result = 0;
int n = 10;
float temp;
for( int i = 1; i <= n; i ++ )
{

temp = 1;
for( int j = 1; j <= i; j ++ )
{
temp *= j;
}
result += 1 / temp;

}