在 java 中查找欧拉数的问题

Issue finding euler's number in java

我必须找到 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.7182818011463845 时输出 2.7557319223985893E-6。我 运行 通过代码几次,但我无法弄清楚问题所在。感谢您的帮助。

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

不需要阶乘法。由于 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

而欧拉数也是(1 + r)(1/r)极限如r 接近 0.

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