编写Java程序,怎么使用while循环语句计算1+1/2!+1/3!…1/20!之和?

如题所述

    package practice;  

    /* 

    使用while循环 计算1+1/2!+1/3!+...+1/20! 

    a用于存储前n个阶乘分之一 

    sum 用于累加和 

    */  

    public class WhileDemo {  

    public static void main(String[] args) {  

    /*i=i+1的简写形式是i+=1;但是二者有本质的区别: 

    如果 i是short类型,+=:会自动类型提升,而=则不会 

    所以  

    short i=0; 

    i+=1;//编译通过,类型提升 

    i=i+1;//编译失败,因为这是赋值操作, 

    i是short类型,而1是默认是int类型 

    */  

    double sum = 0,a = 1;//因为是分式,所以用double类型  

    int i = 1;  

    while(i <= 20) {  

    sum +=a;  

    i++;  

    a*=(1.0/i);//使a的值发生变化  

    System.out.println(a*i);  

    }  

    System.out.println(sum);  

    System.out.println("_________________________");  

    ForDemo.main(args);  

    System.out.println(Text.jieCheng(4));  

    }  

    }  

    class ForDemo{  

    public static void main(String[] args) {  

    double sum = 0,a = 1;  

    for (int i = 1; i <=20; i++) {  

    sum +=a;  

    a*=(1.0/i);  

    System.out.println(a*i);  

    }  

    sum--;  

    System.out.println(sum);  

    }  

    }  

    //递归做法:效率不高,判断影响性能  

    class Text{  

    public static void main(String[] args){  

    //       double sum=0.0,count=1.0;  

    // while(count<=20.0){  

    // sum+=1.0/(jieCheng(count));  

    // count++;  

    // }  

    // System.out.print(sum);  

    }  

    public static long  jieCheng(long sum){  

    /* for(int i=1;i<=c;i++){ 

    sum*=i; 

    }*/  

    if(sum<=1)return 1;  

    return sum*jieCheng(sum-1);  

    }  

    }  

温馨提示:内容为网友见解,仅供参考
第1个回答  2021-03-03
答案是1.90,取了两位数
相似回答