You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言级数展开实现exp(x)函数的代码正确性问询

关于级数展开计算exp(x)的代码检查建议

嘿,作为C语言新手完成这个作业超棒的!不过你贴的代码片段没写完(只到#include <m...),没法直接判断是否完全符合作业要求。不过我可以给你梳理下这个作业的核心要点,再提供一个符合要求的示例代码,你可以对照着自己的代码检查~

作业核心要求回顾

要通过级数展开计算exp(x),公式是:

exp(x) = 1 + x + x²/2! + x³/3! + ... + xⁿ/n! + ...

终止条件是求和增量的相对值小于指定精度e,也就是当前要加的那一项(增量)和当前已求和结果的比值的绝对值小于e,即 |term / sum| < e。

符合要求的示例代码

#include <stdio.h>
#include <math.h> // 用于fabs()取绝对值

// 计算exp(x),精度为e
double compute_exp(double x, double e) {
    double sum = 1.0;   // 级数的初始项(n=0时的项:x^0/0! = 1)
    double term = 1.0;  // 当前要累加的项,初始为第一项
    int n = 0;

    do {
        n++;
        // 递推计算下一项:x^n/n! = (x^(n-1)/(n-1)!) * x/n,避免直接算阶乘溢出
        term *= x / n;
        sum += term;
        // 判断增量的相对值是否小于精度e
    } while (fabs(term / sum) >= e);

    return sum;
}

int main() {
    double x, precision;
    printf("请输入x的值:");
    scanf("%lf", &x);
    printf("请输入精度要求e:");
    scanf("%lf", &precision);

    double result = compute_exp(x, precision);
    printf("按级数计算的exp(%.2lf) = %.8lf(精度:%.10lf)\n", x, result, precision);
    // 和标准库函数对比验证结果
    printf("标准库exp()计算结果:%.8lf\n", exp(x));

    return 0;
}

你可以对照检查自己代码的几个关键点

  • 递推计算项:有没有用递推方式生成每一项?如果直接计算x^n和n!,当n较大时很容易溢出,递推term *= x/n是更高效且安全的方式
  • 终止条件:是不是判断的增量的相对值?别搞成增量的绝对值哦!比如当x很大时,sum会变得很大,此时很小的绝对值项可能相对误差还没达标;反之x很小时,稍大的绝对值项可能相对误差已经满足要求
  • 头文件与函数:有没有包含math.h?因为要用到fabs()来取绝对值(如果你的代码里是#include <math.h>就对啦)
  • 输入输出:有没有实现接收x和e的输入,以及输出计算结果?作业要求输出结果,这部分不能少

如果把你的完整代码贴出来,我还能帮你更精准地检查哦!

内容的提问来源于stack exchange,提问作者Zepfyr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:43:02