public class Example_02 {
  public static void main(String args[])
{
      double sum = 0,a = 1;
      int i = 1;
      while(i <= 20)
      {
       sum = sum+a;
       i = i+1;
       a = a*(1.0/i);
      }
      System.out.println(sum);
    }
}

解决方案 »

  1.   

    是不是应该改成这样:public class Example_02 {
      public static void main(String args[])
    {
          double sum = 0,a = 1;
          int i = 1;
          while(i <= 20)
          {
           sum = sum+a;
           i = i+1;
           a = 1.0/(a*i);
          }
          System.out.println(sum);
        }
    }
      

  2.   

    public class Test {
        public static void main(String args[]) {
            double sum = 0, a = 1;
            int i = 1;
            while (i <= 20) {
                sum += 1.0 / a;
                a *= ++i;
            }
            System.out.println(sum);
        }
    }
      

  3.   

    这个是错误的,自己用笔算一下就可以知道了,只计算到3,sum就是错的,算法有问题
    我写的,给你作参考public class ee { public static void main(String[] args) {
    float sum = 0;
    float p = 1;
    while (p <= 6) {
    float m = 1 / p;
    sum = sum + m;
    p = p + 1;
    }
    System.out.println("sum " + sum);
    }
    }
      

  4.   


    public class Example_02 
    {
    public static int factorial(int i)
    {
    int result = 1;
    while(i!=0)
    {
    result *= i--;
    }
    return result;
    } public static void main(String[] arguments)
    {
    int i = 1 ;
    double sum = 0.0 , a = 0.0;
    while( i<=20 )
    {
    a = 1.0 / (double) factorial(i);
    sum += a;
    ++i;
    }
    System.out.println(sum);
    }
    }
      

  5.   

    验算:
    user=> (defn n! [n] (apply * (range 1 (inc n))))
    #'user/n!
    user=> (defn x [n] (apply + (map #(/ 1.0 (n! %)) (range 1 (inc n)))))
    #'user/x
    user=> (x 20)
    1.7182818284590455
    和你的结果一样。
      

  6.   

    public static void main(String[] args) {
    int i=1,k=1;
    double sum=0;
    while(i<=20){
    k*=i;   //k是除数,是i的阶乘
    sum+=(1.0)/k;
    i++;
    }
    System.out.println(sum);
    }你里面的  a = 1.0/(a*i) 目的是求 1/n!,但不能这么写的,阶乘要作为一个除数来用
      

  7.   

    楼主的问题错在 int i = 1;这里,如果指定 i 为int类型,当你计算1/i的时候,结果为0,而不是你想要的,这是由java中int类型决定的,如果 定义 double i = 1;再运行你的程序,结果就正确了,这个就好比:short s1 = 1; s1 = s1 + 1;会提示错误一样,因为会自动提升表达式类型