double s=0;
int x=1;
for(int i=1;i<=n;i++)
{
x*=i;
s+=(n-i+1)/x;
}
这样应该就可以达到你要的要求了吧 ,无需特意定义 n! 函数
#include
double fact(int n)
{
double s=1.0;
int i;
for(i=1;i<=n;i++)
s*=i;
return s;
}
void main()
{
int i,n;
double s=0.0;
scanf("%d",&n);
for(i=1;i<=n;i++)
s+=(n+1-i)/fact(i);
printf("s=%lf\n",s);
}
#include
double fact(int n)
{
int i;
double m=1;
for(i=1;i<=n;i++)
m=m*i;
return m;
}
void main()
{
int i,n;
double sum=0;
printf(" 输入n值");
scanf("%d",&n);
for(i=1;i<=n;i++)
sum=sum+(n-i+1)/fact(i);
printf("s=%lf",sum);
}
我给你写了个,你看看怎么样:
#include
/********************************************************
*函数名:fact(int n)
*函数输入参数:int n
*函数返回值:double ldfac
*函数功能:求输入参数 n 的阶乘,并通过ldfac将其阶乘返回。
*********************************************************/
double fact(int n)
{
int li;
double ldfac = 1.0;
for(li=1; li
ldfac *= li;
}
return ldfac;
}
/********************** 主函数 *******************************
*函数功能:求和 gdsum=gin+(gin-1)/2!+(gin-2)/3!+......+1/gin!
* 并将gdsum其输出
**************************************************************/
int main()
{
int gi; /* for循环中的变量 */
int gin; /* gin为要输入的参数 */
double gdsum = 0.0; /* 求和 */
printf("please inter the n:");
scanf("%d",&gin);
for (gi=1; gi
gdsum += (gin + 1 -gi)/fact(gi);
}
printf("the gdsum is %lf",gdsum);
return 0;
}