首页 > 解决方案 > 在 C 语言中找到 'e' 的近似值

问题描述

我正在尝试使用 C 程序找到“e”的近似值。无论我输入 n 的值是什么,我都会使 e 的值为真。请让我在我的代码中找到错误。

#include <stdio.h>

int f;
int k;

int factorial (int f);

int main () { 
    int n,i;

    int e = 1;

    printf("Enter the value of n:");
    scanf("%d",&n);

    for (i = 1; i <= n; i++) {
        e = e + (1/factorial(i));
    }

    printf("The value of e is %d",e);

    return(0);
}

int factorial (int f) {    
    for (k = 1; k <= f; k++) {
       f = f*k;
    }

    return(p);
}

标签: cnumerical-methods

解决方案


如前所述,您必须使用浮点变量。还有一个问题是12之后阶乘函数会溢出!此外,不断地重新计算阶乘是一种处理能力的浪费。这显示了在前项的基础上实现泰勒级数的更有效方法。这也回避了计算阶乘的问题。

#include <stdio.h>

int main(void) {
    double e, term;
    int t, n;

    printf("Enter the value of n:");
    if(scanf("%d", &n) != 1) {
        return 1;
    }

    e = 1;
    term = 1;
    for(t = 1; t <= n; t++) {
        term /= t;
        e += term;
    }
    printf("%.15f\n", e);
    return 0;
}

n使用程序可以处理的最大值来输出程序

输入 n:12 的值
2.718281828286169

math.h其中是

2.718281828459045...

这不是很准确。此示例允许获得更准确的值:

输入 n:20 的值
2.718281828459046

推荐阅读