0

我必须找到e,即1/0!+ 1/1!+ 1/2!+ 1/3!... +1/n!给定 n 作为参数,我无法获得正确的答案。

public double Factorial(int n) {
        long fact = 1;
        for (int i = 1; i <= n; ++i) {
            fact *= i;
        }
        return fact;
    }



    public double euler(int n) {
        double y = 0;
        for (int x = 0; x <= n; x++) {
            double e = 1 / Factorial(n);
            y = y + e;
        }
        return y;

当我输入时10,这2.7557319223985893E-6会在我应该得到的时候输出2.7182818011463845。我跑了几次代码,但我无法弄清楚问题所在。任何帮助表示赞赏。

4

1 回答 1

0

评论中给出的答案解决了这个问题。由于您已经掌握了算法,您可能会对以下内容感兴趣:

阶乘方法不是必需的。由于 is 的每个后续值,n!n! * (n+1)都可以按如下方式将其放入主循环中。

// initialize fact to 0!
double fact = 1;

// first Euler term 1/0!
double y = fact;

for (int x = 1; x <= n; x++) {
    // next factorial
    fact *= x;
    // subsequent terms
    y += (1 / fact);
}
System.out.println(y);

印刷

2.7182818011463845

r接近0时,欧拉数也是(1 + r) (1/r)的极限

double r = .000000001;
System.out.println(Math.pow(1 + r, 1/r));
        
2.71828205201156



于 2020-09-12T18:10:09.420 回答