计算e的近似值

int main ()
{ double jingdu,e;
  double a=0,b=1,c,d=0,i;
  scanf("%lf",&jingdu);//输入精度
   for (i=1;i>jingdu;)//先把条件放在一边架构好整个算法结构
   {   a=1+a;//a=1   a=2    a=3
       b=b*a;//b=1   b=1*2  b=2*3
       c=1/b;//c=1! c=2! c=3!
       d=c+d;//d=1!+0  d=2!+1!  d=3!+2! 
       i=c;//i=1/n  实现条件控制
   }
   e=d+1;//e=1+1/1!+1/2!+…1/n!
   printf("%.10lf",e);//保留10位小数

}

/*数学常量 e 的值可以用一个无穷级数表示: e = 1 + 1/1! + 1/2! + 1/3! + ...
当n很大时,通项 1/n!会很小,因此,在计算中可以认为通项1/n! 小于等于给定的精度以后的项可以忽略。*/

下面是我用for while do…while写的东西

//我的for循环
/*
int main ()
{ double jingdu,e;
  double a=0,b=1,c,d=0,i;
  scanf("%lf",&jingdu);
   for (i=1;i>jingdu;)
   {   a=1+a;
       b=b*a;
       c=1/b;
       d=c+d;
       i=c;
   }
   e=d+1;
   printf("%.10lf",e);


}*/
//我的do  while
/*int main ()
{ double  jingdu,e;
  double  a=0,b=1,c,d=0,i;
  scanf("%lf",&jingdu);
 do
  { a=a+1;
    b=b*a;
    c=1/b;
    d=d+c;
    i=c;
  } while(i>jingdu);
 e=1+d;
 printf("%.10lf",e);
}
*/
//我的while
int main()

 {

  double  jingdu,e;
  double  a=0,b=1,c,d=0,i=1;
  scanf("%lf",&jingdu);
 while(i>jingdu)
  { a=a+1;
    b=b*a;
    c=1/b;
    d=d+c;
    i=c;
  }
 e=1+d;
 printf("%.10lf",e);
}
//个人认为使用for和do…while 比较好写

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值