如何在 1000 次迭代中计算欧拉数?

How to calculate Euler number in 1000 iteration?

是否可以用一种方法计算1000次迭代中的欧拉数,我是否需要首先计算阶乘?

这是我的代码:

import java.math.BigDecimal;

public class EulerNumber {

    public static void main(String[] args) {
        for (int i = 1; i < 1000; i++) { 
        }
        System.out.println("e = " + e);
    }

    private static double Euler() {
        return 0;
    }
}

是的,可以通过 1000 项的部分和计算出超过 2300 个正确数字的近似值。误差小于2/1000! (幅度为 1/300^1000)

不,没有必要计算阶乘,在任何情况下,都应该避免显式阶乘函数,只需更新前一项的下一项或使用类似 Horner 的方案从上一项开始。

很简单,如果我没理解错的话,你需要在1000次迭代中计算欧拉数,而不是计算1000次,所以for循环应该移到欧拉函数中。

public class EulerNumber {

    public static void main(String[] args) {
        System.out.println("e = " + Euler());
    }

    private static double Euler() {
        double e=1;
        double f=1;
        for ( int i=1; i <= 1000; i++) {
            f = f * (1.0 / i);
            if ( f == 0 ) break;
            e +=  f;
        }
        return e;
    }
}

e 是到目前为止估计的欧拉数,f 是要在下一个操作中添加的分数 (1/n!)。您不必计算 n!每次,最好边计算边计算。我已经检查并知道 1000 对于双精度来说太高了,因为 f 在我的计算机中经过 178 次迭代后收敛到 0。所以剩下的过程是没有必要的。