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

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

 

思路两个

1.

求出阶乘。

1/阶乘。

求和。

2.

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

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

#include <stdio.h>
#include <stdlib.h>
#include<math.h>


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 %d\n",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 %d\n",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 %d\n",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 %d\n",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;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值