Java计算20的阶层之和,1+1/2!+1/3!......1/20!

package project0329.suanfa.start1;

import java.math.BigDecimal;
import java.util.Scanner;

public class Stratum {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
/*	我的错误答案
 * int d=1,sum=0,k=0;
    Scanner num=new Scanner(System.in);
    System.out.println("请输入要阶层值");
    int n=num.nextInt();
    for(int i=1;i<n;i++) {
    	for(int j=i+1;j>=1;j--) {
    		d*=j;
    		k=1/d;
    		 System.out.println(k);
    	}
    	sum+=k;
    }
    System.out.println(sum);
  
 */  
//正确答案
    BigDecimal sum = new BigDecimal(0.0); // 和
    BigDecimal factorial = new BigDecimal(1.0); // 阶乘项的计算结果
    int i = 1; // 循环增量
    while (i <= 20) {
        sum = sum.add(factorial); // 累加各项阶乘的和
        ++i; // i加1
        factorial = factorial.multiply(new BigDecimal(1.0 / i)); // 计算阶乘项
    }
    System.out.println("1+1/2!+1/3!···1/20!的计算结果等于:\n" + sum); // 输出计算结果
	}

}

 

计算阶层之和结果如下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章