#include<stdio.h>
#include<math.h>
double fn(double a){
double j=1;
for(double i=1;i<=a;i++){
j=j*i;
}
return j;
}
int main(){
double a,i,s=1;
scanf("%lf",&a);
for(i=1;i<=a;i++){
s=s+1/fn(i);
}
printf("%.8f",s);
return 0;
}
函数不太熟悉,fn(a)的话,a为10时,s就是1+1/10!+1/10!..,所以错了。。得是i
之后错误点就是函数设置的是int,所以s=s+1/fn就不对了,输出为2.00000000;所以要把1改为1.0(即s=s+1.0/fn)或者fn定义的时候为double.