自然底数E的问题

powerwheel 2010-05-14 12:58:52
我们的书中有一道求E的题目:
e=1+1/1!+1/2!+1/3!+........要求精确到小数点以后8位
用递归的方法求,
那位知道帮一下谢谢了。
...全文
383 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2010-05-14
  • 打赏
  • 举报
回复
又是作业......
缘梦逍遥 2010-05-14
  • 打赏
  • 举报
回复
同意楼上的
huanmie_09 2010-05-14
  • 打赏
  • 举报
回复
1楼的思想,以前在百度贴吧回复过的答案:

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

/*
用台劳级数求e的近似值,直到最后一项小于10^-9
e=1+1/1!+1/2!+1/3!+ ……
*/
long fun(int n);

int main()
{
int i = 1;
double e = 0.0, elem = 1.0;
do {
e += elem;
elem = 1.0 / fun(i);
i++;
} while(fabs(elem) >= 1e-9);
printf("e=%.8f\n", e);
return 0;
}

long fun(int n)
{
long s = 1;
while(n > 1) {
s *= n;
n--;
}
return s;
}

whg01 2010-05-14
  • 打赏
  • 举报
回复
1. 用double变量,因为float的有效数字不够。
2. 精确到小数点后8位,这个是循环的终止条件。根据这点,可以得出当1/n小于0.000000001时,就可以终止递归了。
即计算1/1!+1/2!+...+1/n!即可。
还有什么问题?

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧