Java计算运行时错误(使用阶乘计算欧拉数)

标签 java

我正在尝试计算欧拉数。 如欧拉数e = 1 + (1/1!) + (1/2!) + (1/3!) + ..... = 2.718281828.... 其中n!等于 n 的阶乘。 首先我写了一个类Factorial.class计算阶乘:

文件Factorial.java

public class Factorial
{
//Methods
//If statement to abolish negative integer parameter have to be filled
     public static int factorial(int number)
     {
          if (number == 0 || number == 1)
          {
               return 1;
          } else
          {
               int m = number;
               for (int i = number - 1; i > 1; i--)
               {
                    m = m * i;
               }
               return m;
          }
     }
}

该类与测试类配合良好 FactorialTest.class

文件FactorialTest.java

public class FactorialTest
{
     public static void main(String[] args)
     {
          System.out.println(Factorial.factorial(10));
     }
}

该类打印 3628800

后来我创建了一个EulersNumber.class打印 e 的值:

文件EulersNumber.java

public class EulersNumber
{
     public static void main(String[] args)
     {
          double e = 1;
          for (int i = 1; i > 10000; i++)
          {
               double j = (double)(Factorial.factorial(i));
               double k = 1 / j;
               e = e + k;
          }
          System.out.println("e = " + e); //e = 1.0
     }
}

e 的值应该是 2.718281828....但是这个类打印 e = 1.0

我哪里出错了?

最佳答案

for (int i = 1; i > 10000; i++)

上面的行有问题。该循环仅在 i > 10000 时执行。但是 i 从 1 开始。所以它永远不会执行。

顺便说一句,您将无法使用 int 来表示 10000 的阶乘,这是一个非常大的数字,远远超出了 int 的限制(即2^32 - 1)。请改用 BigInteger。

关于Java计算运行时错误(使用阶乘计算欧拉数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16622357/

相关文章:

java - 使用endpoints.sh生成客户端库不会生成libs JAR

Java 字符集InputStreamReader、文件 channel 差异

带有最后修改时间的Java集合数据结构

java - Android C/C++ native 调用 Java API

java - 将数组拆分为 X 长度的片段

java - Java 中的 Liquibase 回滚似乎不起作用

java - 如何告诉 Gradle 使用特定的 JDK 版本?

java - 如何修复 Exchange Web 服务 (EWS) 的客户端协议(protocol)异常

java - 耶拿 someValuesFrom 错误 - {E201} rdf :resource not allowed as attribute here

java - 使用http发送二进制数据