-3

級数を使用して e を近似する必要があります: e= 1+ 1/1! +1/2!+..+1/n! which n=100000 これは私がしたことですが、コンパイルを拒否しました..

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);
   }
}
4

2 に答える 2

0

エラーを防ぐために、long の代わりに double を使用します。

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;
 }
于 2017-10-11T02:36:33.653 に答える