C语言求阶乘倒数之和?
#include
#if 0
double fun(int a)
{
int i,j;
double m,S=1.0;
for(i=2;i<=a;i++)
{
m=1.0;
for(j=1;j<=i;j++)//--变++不变也可
{
m*=j;//改了一下
}
S+=1.0/m;
}
return S;
}
#endif
//优化了一下
double fun(int a)
{
int i,j;
double m=1.0,S=1.0;
for(i=1;i<=a;i++)//从0算起,从1算起的话改回:for(i=2;i<=a;i++)
{
m*=i; // 求阶乘
S+=1.0/m;//倒数相加
}
return S;
}
main()
{
int n,sum;
scanf("%d",&n);
sum=fun(n);
printf("%d\n",sum);