习题4-2 求幂级数展开的部分和 (20分)-程序员宅基地

技术标签: # 浙大版《C语言程序设计(第3版)》题目集  

习题4-2 求幂级数展开的部分和 (20分)

题目描述

已知函数 e x e^x ex 可以展开为幂级数 1 + x x x + x 2 / 2 ! x^2/2! x2/2! + x 3 / 3 ! x^3/3! x3/3! + ⋅ ⋅ ⋅ ··· + x k / k ! x^k/k! xk/k! + ⋅ ⋅ ⋅ ··· 。现给定一个实数 x x x,要求利用此幂级数部分和求 e x e^x ex 的近似值,求和一直继续到最后一项的绝对值小于0.00001。

输入格式:
输入在一行中给出一个实数 x ∈ [ 0 , 5 ] x∈[0,5] x[0,5]

输出格式:
在一行中输出满足条件的幂级数部分和,保留小数点后四位。

输入样例:

1.2

输出样例:

3.3201

本题花了很长时间,一直过不了 x = 5 x=5 x=5 这个测试点,最后发现是【精度】的问题,定义的阶乘函数返回的是 int 类型,导致后面数据溢出,会算出来负数。将阶乘函数返回值 int 改为 double,结果正确。

答案

【初级方法】

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

#define EPS 0.00001
// 就是下面的 factor 函数,返回值要改为【double】,int的精度不够!
double factor(int n) {
    
    if (n == 0) return 1;
    else return n * factor(n - 1);
}

int main() {
    
    double x = 0;
    double sum = 1;
    scanf("%lf", &x);
    for (int i = 1;; i++) {
    
        double last = pow(x, i) / factor(i);
        sum += last;
        if (last < EPS) {
    
            break;
        }
    }
    printf("%.4f", sum);
    return 0;
}

【进阶方法】
上面的解决方案使用了递归调用,开销很大。通过观察可以发现,后一项正好是前一项乘以 x / i x/i x/i,所以可以改为:

#include<stdio.h>

#define EPS 0.00001

int main() {
    
    double x, res = 1;
    double sum = 1;
    scanf("%lf", &x);
    for (int i = 1;; i++) {
    
        res = res * (x / i);	// 每一项
        sum += res;      
        if (res < EPS) {
    
            break;
        }
    }
    printf("%.4f", sum);
    return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44216110/article/details/105102886

智能推荐

Android预览Office文档_android 预览office-程序员宅基地

文章浏览阅读7.1k次,点赞2次,收藏10次。在安卓上预览Office文档如doc,pdf等,我想大部分做安卓开发的小伙伴都会遇到这样的需求,ios有支持在线打开的系统能力,只需要一个链接就可以,而安卓想要实现在线打开,可就非常困难了!Android实现在线打开PDF安卓系统本身不提供文档在线打开能力,想要实现,那就需要自己想办法,自己技术团队实现,或者用网上已有的方案比如pdfjs,pdfjs是mozilla实现的一套在线打开pdf的web项目方案,启动项目后只需要在url后面拼上你的pdf链接,即可实现在线打开,pc端打开后大概是这个样子:_android 预览office

使用Pytorch在StarCraft II 星际争霸2上实现多智能体强化学习算法_pythorch 打星际争霸-程序员宅基地

文章浏览阅读5k次,点赞15次,收藏56次。文章目录前言正文torchMARLCorresponding PapersInstallationUsageResults3m5m_vs_6m前言之前因为一直没有实现Weighted QMIX,感觉公开的意义不大,所以就没写博客介绍。现在已基本复现了效果,受制于计算资源,没有完整运行论文中的实验。仓库链接:https://github.com/jingranburangyongzhongwen/torchMARL正文torchMARL主要是一些MARL算法的pytorch实现,目前包括:VDN_pythorch 打星际争霸

小程序开发商该怎么选-程序员宅基地

文章浏览阅读208次。  小木最近收到很多关于小程序开发制作的相关问题,其中“小程序开发商该怎么选?”这个问题被频繁提及,市面上那么多家小程序开发商,该怎么选?选择时应该注意哪些问题?小木整理汇总了以下几个衡量标准,供大家参考。    1、实力    这个不难理解,有实力的企业自然在团队、产品、服务等方面都更具优势。那我们怎么去判断一家开发商的实力怎么样?可以从开发商成立时间、团队人员、服务客户数量等硬性配置水平方面以及一些获奖证书等来了解公司规模和资质实力,正规的开发商都会有官网,我们可以从上面进行了解,如._小程序开发商该怎么选

ubuntu18.04安装sqlserver2019_sql sever2019安装包-程序员宅基地

文章浏览阅读628次,点赞8次,收藏8次。【代码】ubuntu18.04安装sqlserver2019。_sql sever2019安装包

rime输入法初识----sample目录插件与样例分析(二)_rime脚本-程序员宅基地

文章浏览阅读405次。2021SC@SDUSC今天讲讲sample中cmake的集成方式构建为标准的 Rime 插件与按照 librime 的 cmake 脚本中的特定规则构建的示例不同,标准 Rime 插件是独立的项目,可以自动集成到 librime 的构建系统中,而无需修改任何源代码和构建脚本。要将示例插件构建为标准 Rime 插件,将源代码目录链接或复制到 plugins/sample 并关闭 cmake 标志 BUILD_SAMPLE=OFF。https://github.com/rime/libri._rime脚本

[LIBGDX学习]LibGDX代码详解(九)Box2D revolute joint_box2d revolutejoint-程序员宅基地

文章浏览阅读217次。import com.badlogic.gdx.math.Vector2;import com.badlogic.gdx.physics.box2d.Body;import com.badlogic.gdx.physics.box2d.BodyDef;import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;import com.badl..._box2d revolutejoint

随便推点

QT5.3.2编译程序出错: GL/gl.h: No such file or directory-程序员宅基地

文章浏览阅读1.6k次。用QT5.3.2编译程序报错: fatal error: GL/gl.h: No such file or directory原因:You are missing the OpenGL include files. Install the mesa-common-dev package.解决方法:sudo apt-get install mesa-common-devsudo apt-get in_gl/gl.h: no such file or direc

.Net Core 微服务实战 - gRPC 管理内部服务间通讯_.netcore proto 独立库-程序员宅基地

文章浏览阅读949次,点赞2次,收藏2次。gRPC 管理内部服务间通讯gRPCgRPC 的特点.NET 生态对 gRPC 的支持使用 gRPC.proto 文件服务端使用 gRPC客户端使用 gRPC使用非加密的 HTTP2使用异常拦截器使用代码生成工具_.netcore proto 独立库

linux设备驱动程序之时钟管理_kernel clk_put 源码-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏21次。时钟管理模块是linux系统为统一管理各硬件的时钟而实现管理框架,负责所有模块的时钟调节和电源管理。时钟管理模块主要负责处理各硬件模块的工作频率调节及电源切换管理。一个硬件模块要正常工作,必须先配置好硬件的工作频率、打开电源开关、总线访问开关等操作,时钟管理模块为设备驱动提供统一的操作接口,使驱动不用关心时钟硬件实现的具体细节。 1.系统时钟结构 系统时钟主要是指一些_kernel clk_put 源码

灯塔阅读 - Scientists Are Trying to Pinpoint the Origin of Mysterious Signals From Outer Space_灯塔阅读答案英语-程序员宅基地

文章浏览阅读872次。Have you ever looked up at the sky and wondered if there were aliens looking down upon you? Have you ever turned your radio to a specific frequency and picked up mysterious signals that appeared to be coming from far away? This phenomenon has been observed_灯塔阅读答案英语

爸爸忘掉你还是个孩子_爸爸不要我还是个孩子-程序员宅基地

文章浏览阅读826次。 爸爸忘掉你还是个孩子儿子,在你睡着的时候,我悄悄地来到了你的床边。你的头枕在胖乎乎的小手上,细软的头发搭着额头,小嘴微微地张着,透出稚气和天真。我凝视着你,心中升起愧疚。我对你脾气不好。每天,从你准备上学前,我就开始责备你。我责备你洗脸时只是用毛巾简单地揩一揩眼窝,责备你吃早饭时狼吞虎咽一点也不斯文,责备你把两肘趴在桌上坐姿太放肆,_爸爸不要我还是个孩子

2018中兴违约_中兴三方就业协议解约函 解约申请表-程序员宅基地

文章浏览阅读8.8k次。违约的时候,大家可以新建一个qq群,违约进度和有关问题,大家都可以讨论。 2018年违约通知是3月26号发布的,违约开通日期是4月1号,其实在3月31号晚上10点左右就已经开通了。违约办理需要2个文件:中兴自己的违约申请表,需要学校就业办或者学院盖章;该有章的下家录用证明或者两方协议。 中兴违约异常变态,更变态的是不返旧三方和就业推荐表!!从未见过如此奇葩的理由,大部分的公..._中兴三方就业协议解约函 解约申请表