注册 登录
编程论坛 C++教室

近似求e的问题

徐宗保 发布于 2013-09-24 22:30, 652 次点击
#include<iostream>
using namespace std;
double fact(int n)
{
    double i,t=1;
    if(n==0)
        return 1;
    else
    {
        for(i=1;i<=n;i++)
             t=t*i;
        return t;
    }
}
void main()
{
    double e,temp;
    int i;
    for(i=0;i<50;i++)
    {
        temp=1.0/fact(i);
        e=e+temp;
    }
    cout<<"e="<<e<<endl;
}
代码哪里还有问题?结果一直不对
8 回复
#2
徐宗保2013-09-24 22:44
#include<iostream>
using namespace std;
int main()
{
    double t,e=1,n=1;
    do
    {
        t*=1.0/n;
        e+=t;
        n++
    }while(fabs(t)>=1e-4);
    cout<<"e="<<e<<endl;
    return 0;
}
这个也是,先谢谢了
#3
3037709572013-09-24 23:12
代码没有语法错误,因為不知道你用什麼公式求e所以沒法幫你指出邏輯錯誤。
#4
徐宗保2013-09-24 23:17
回复 3楼 303770957
e=1+1/1!+1/2!+1/3!+......
#5
徐宗保2013-09-24 23:18
回复 3楼 303770957
我知道了,主函数中e没有赋初值,在vc6.0中给我默认了一个很大的负数
#6
徐宗保2013-09-24 23:21
回复 3楼 303770957
第二个用的是while语句,条件是最后一项不小于1e-4,还没找出错误原因,麻烦了
#7
3037709572013-09-24 23:42
第二個是不是t也沒給初值呢?
#8
林凡2013-09-25 22:08
学习一下!!1
#9
qunxingw2013-09-25 22:56
第1个阶乘值超范围了,第二个方法可,但循环条件你要改下,多理解题找出数学式
1