微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Java中发现欧拉数的问题

如何解决在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.7557319223985893E-6时,这将输出2.7182818011463845。我跑了几次代码,但我不知道问题所在。任何帮助表示赞赏。

解决方法

评论中给出的答案解决了该问题。并且由于您没有使用算法,因此您可能对以下内容感兴趣:

阶乘方法不是必需的。由于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) 极限。 / strong>。

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



版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。