使用该系列的javae

使用该系列的javae,java,approximate,Java,Approximate,我需要用级数来近似e:e=1+1/1+1/2!+..+1/n!这是我做的,但它拒绝编译 public class Test { public static void main(String args[]) { long e = 0; for (int i = 1; i <= 100000; i++) { e += 1.0 / factorial(i); } System.out.println(e); }

我需要用级数来近似e:e=1+1/1+1/2!+..+1/n!这是我做的,但它拒绝编译

public class Test {


  public static void main(String args[]) {
      long e = 0;
      for (int i = 1; i <= 100000; i++) {
   e += 1.0 / factorial(i);       
      }

      System.out.println(e);
   }
   public static long factorial(long number) {
      if (number <= 1) return 1;
      else return number * factorial(number - 1);
   }
}
公共类测试{
公共静态void main(字符串参数[]){
长e=0;

对于(int i=1;i2)代码问题:

  • 您需要将
    e
    定义为double
  • 100000是一个非常大的迭代次数,您将在18次迭代中达到最大精度,并获得
    1.7182818284590455
    。之后不会改变

  • 这也不是
    e
    ,但这是一个单独的问题。如果你真的想得到e的近似值,你还需要在其中添加一个。或者从
    double e=1
    开始,我会使用double而不是long来防止任何错误

    100000次迭代是绝对不必要的。最多100次之后可以停止

    因为e=1+1/n!从e=1开始,否则你会得到1.718

    像这样的阶乘方法要简单得多,而且不必调用自身

    public static double factorial(int number) 
      {
      double factorial = 1;
      while (number>1)
      {
          factorial*=number;
          number--;
        }
      return factorial;
     }
    

    你的标题没有意义;它似乎没有传输十个数字,没有使用套接字,也没有使用C。至于Java问题,这段代码对我来说编译得很好,但没有成功运行。Java不仅“拒绝”编译,还会收到一条特定的错误消息,通常指向程序中的特定位置。