如何编写一个简单的JAVA Application 应用程序,计算e=1+1/1!+1/2!+1/3!+……1/20!,并输出计算结果。
急需答案   谢谢!!

解决方案 »

  1.   

    你的两个贴都是简单的问题。不要太多的java知识,
    你不是为了交作业吗?
      

  2.   

    本帖最后由 kokobox 于 2010-12-30 11:31:39 编辑
      

  3.   

    不是为了交作业   我已经出来工作了    因为我在学校的时候没学JAVA  所以不会
    我就向这里求助
      

  4.   

    本帖最后由 kokobox 于 2010-12-30 11:32:01 编辑
      

  5.   

    4行代码  这个不需要Java的很多知识,只是一种编程的思维而已.可以说是为这个题目想一个算法吧.除了Java以外,.net  c c++都是类似的. double sum=0;
    for(int i=1;i<=20;i++)
    {
        sum+=1/i;
    }
    System.out.println(sum);
      

  6.   

    本帖最后由 kokobox 于 2010-12-30 11:32:31 编辑
      

  7.   

    对于这种阶乘的问题还需考虑下类型长度问题,最好使用BigDecimal ,我曾经在面试的时候就遇到这个问题!
      

  8.   


    刚才仔细看了下,6楼的错了,可能是理解错题了!你再看下,题目是每循环一次都decimal.devide操作。以下是我写的import java.math.BigDecimal;public class Test{ 

    /**
     * 计算e=1+1/1!+1/2!+1/3!+……1/20!
     * @param args
     */
        public static void main(String[] args) { 
            BigDecimal temp=new BigDecimal(0);  
            temp =loopA(20);    //获得1/1!+1/2!+1/3!+……1/20!
            temp = temp.add(new BigDecimal(1));    //再加上1
            System.out.println(temp);
        } 
        public static BigDecimal loopA(int number){
         BigDecimal result = new BigDecimal(0); 
            BigDecimal decimal = new BigDecimal(1); 
            for(int i = 1; i <= number; i++){
                BigDecimal temp = new BigDecimal(1);
             decimal = decimal.multiply(new BigDecimal(i));
             System.out.println("decimal = " + decimal);
             temp = temp.divide(decimal,50,BigDecimal.ROUND_HALF_EVEN);
             System.out.println("temp : " + temp);
             result = result.add(temp);
            }
            System.out.println(result);
         return result;
        }
    }
      

  9.   

    本帖最后由 kokobox 于 2010-12-30 11:33:04 编辑
      

  10.   

     刚才仔细看了下,6楼的错了,可能是理解错题了!你再看下,题目是每循环一次都decimal.devide操作。以下是我写的 Java code
    import java.math.BigDecimal;public class Test{ 
        
        /**
         * 计算e=1+1/1!+1/2!+1/3!+………
    [/Quote]不是吧··· 我是这样想的 e=1+1/(1!+2!+3!...20!)
    loop方法主要是计算(1!+20!) 你再看看···
      

  11.   

    本帖最后由 kokobox 于 2010-12-30 11:33:25 编辑
      

  12.   

    return 1 + 1/1 + 1/2 + 1/(3*2) + .... + 1/(20*19*18...);
      

  13.   

    20! < Long.MAX_VALUE 所以使用 long 就可以了。
      

  14.   

    其实long也不一定需要double e = 1, f = 1;
    for (int i = 1; i <= 20; i++) {
        f /= i;
        e += f;
    }
    System.out.println(e);
      

  15.   

    //不考虑精度的话,计算e=1+1/1!+1/2!+1/3!+……1/20!
    public double e(){
      final int n = 20;
      double e=1;
      for(int i=1;i<=n;i++){
        double t=1;
        for(int j=2;j<=i;j++){
          t*=j;
        }
        e+=1/t;
      }
      return e;
    }
      

  16.   

    只计算一次阶乘 public static void test(){
    int num = 20;
    double sum =0;
    long temp = 1; 
    for(int i=2;i<=num;i++){
    temp =temp * i;
    sum+=temp;
    }
    System.out.println(1/sum);
    }
      

  17.   


    public static void main(String[] args) {
    int num = 20;
    double sum =0;
    double temp = 1; 
    for(int i=1;i<=num;i++){
    temp *= i;
    System.out.println(i+"!="+temp);
    sum+=1/temp;
    System.out.println("sum="+sum);
    }
    System.out.println(sum);
    }