鱼C论坛

 找回密码
 立即注册
查看: 14063|回复: 3

C语言求e的近似值

[复制链接]
发表于 2016-4-13 13:52:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目:用e≈1+1/1!+1/2!+1/3!+...+1/n!求e得近似值,直到最后一项的绝对值小于10负六次方。
求大神指导指导,我打的代码编译组建时都没错,但运行时没反应。

112948f4ssp4rqffroefz3.png.thumb.jpg
#include <stdio.h>
#include <math.h>
int main ()
{    
        int n=1;
        float sum=1,term=1,a;     //sum开始代表多项式的值,最后代表e的近似值,term代表当前项的值
        
        while (fabs(term)>=1e-6)
        {   n++;
                term=1/(term*n);
                sum=sum+term;
        }
        printf ("e=%10.8f\n",sum);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-13 15:16:59 | 显示全部楼层
本帖最后由 mingcxx 于 2016-4-13 15:53 编辑

问题原因:语句" term=1/(term*n);”有问题:(n++位置也有问题)
它的作用是:取前一项M,乘以当前n, 再取倒数为当前项, 等于1/(M*n),把前一项套在了当前项的分母,当前项错误,累加也就错了,回到循环首,错误的当前项大于1e-6,继续循环,依次往后,每一项的分母套上了前一项,无限循环......
解决方法:声明一个变量保存当前项的分母,分母不断取阶乘、取倒数得到当前项,再把当前项累加起来, 注意n++位置,在循环体最后。
#include <stdio.h>
#include <math.h>
int main(void)
{
        int n = 1;
        float sum = 1, term = 1, term_monther = 1;     //那个a利用上,保存分母

        //从第二项开始
        while (fabs(term) >= 1e-6)
        {
                term_monther *= n;                                        //分母累乘
                term = 1 / term_monther;                                //当前项
                sum += term;                                                        //当前项加到sum里
                n++;
        }

        printf("e=%10.8f\n", sum);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-4-13 18:52:13 | 显示全部楼层
mingcxx 发表于 2016-4-13 15:16
问题原因:语句" term=1/(term*n);”有问题:(n++位置也有问题)
它的作用是:取前一项M,乘以当前n, 再取 ...

哦哦,这样啊。一开始还以为term_monther *= n;term = 1 / term_monther;这两条语句合起来就是我打错这个term=1/(term*n) ,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-13 18:54:03 | 显示全部楼层
zhyin 发表于 2016-4-13 18:52
哦哦,这样啊。一开始还以为term_monther *= n;term = 1 / term_monther;这两条语句合起来就是我打错这个 ...

么事么事,清楚了就好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表