e=1的阶乘+12的阶乘+13的阶乘+...+1n的阶乘,直到最后一项小于1e-5

e=1的阶乘+12的阶乘+13的阶乘+...+1n的阶乘,直到最后一项小于1e-5,第1张

e=1的阶乘+1/2的阶乘+1/3的阶乘+...+1/n的阶乘,直到最后一项小于1e-5

1和2不知道为什么有时会不一样,明明只是名字变了变。

 

思路两个

1.

求出阶乘。

1/阶乘。

求和

2.

1/n!=1/(n-1)/n;

后一项的阶乘等于前一项除以后一项的标码。

#include 
#include 
#include


int main()
{
printf("1.");
    double e=1.0,term;
    int n,count=1;
    long fac=1;
    for(n=1;fabs(term)>=1e-5;n++)
    {
        fac=fac*n;
        term=1.0/fac;
        e=e+term;
        count++;
    }
    printf("%f %dn",e,count);

printf("2.");
    double e0=1.0,term0;
    int n0,count0=1;
    long j=1;
    for(n0=1;fabs(term0)>=1e-5;n0++)
    {
        j=j*n0;
        term0=1.0/j;
        e0=e0+term0;
        count0++;
    }
    printf("%f %dn",e0,count0);

printf("3.");
    int n1=1;
    double e1=1.0,term1=1.0;
    do{
        term1=term1/n1;
        e1=e1+term1;
        n1++;
    }while(fabs(term1)>=1e-5);
    printf("%f %dn",e1,n1);

printf("4.");
    int n2=1;
    double e2=1.0,term2=1.0;
    while(fabs(term2)>=1e-5)
    {
        term2=term2/n2;
        e2=e2+term2;
        n2++;
    }
    printf("%f %dn",e2,n2);


printf("5.");
    int n3=1;
    double e3=1,term3=1;
    while(fabs(term3)>=1e-5)
    {
        term3=term3/n3;
        e3=e3+term3;
        n3++;
    }
    printf("%f %d",e3,n3);


    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5714095.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存