这个阶乘怎么算啊,这个分母我不知道怎么改

img


这个分母的阶乘一定要用for语句来写吗,一定要写个循环吗,我这样写输不出正确答案,a=a*i不可以吗😭

输入的数 n <= 1000 ,用 double 型也不够会溢出。供参考:

#include <stdio.h>
int main()
{
    int  i, n;
    double t = 1.0, s = 1;
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {
        t *= i;
        s += 1.0 / t;
    }
    printf("%.8f", s);
    return 0;
}


题主的代码这么改下,见注释,供参考:

#include <stdio.h>
int main()
{
    int n;
    double b;
    b = 0;
    scanf("%d", &n);
    int i;
    double a = 1.0; //int a = 1; a 是求阶乘的变量,用 int 型不合适
    for (i = 1; i <= n + 1; i++) //for (i = 0; i <= n + 1; i++)
    {                                      //因为 b 初始值为 0 ,求阶乘在后,所以循环里退出条件 i <= n+1
        b += 1.0 / a;
        a *= i;
    }
    printf("%.8f", b);
    return 0;
}

for循环i=0不对,改为i=1
int a最好改为double a
n<=1000,太大了