关于计算阶乘

简介:

碰到一个例子,用while循环方法计算1+1/2!+1/3!+...1/20!

刚开始的时候以为阶乘能直接写,像这样

1
2
3
4
5
6
7
8
9
10
11
12
package  com.lixiyu;
public  class  Count1 {
public  static  void  main(String[] args){
     int  i= 1 ;
     int  sum= 0 ;
     while (i<= 20 ){
         sum+=( 1 /i!);
         i++;  
     }
     System.out.println( "sum=" +sum);
}
}

就一直在阶乘的位置“!”提示错误:java Syntax error on token "!", delete this token

后来想是不是 !不能直接拿来用的,谷歌一下,发现原来要调用数学式的一个包:java.math.BigDecimal

不过看了API文档没把这个用法给弄清楚。一知半解

先把源码贴出来,慢慢琢磨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package  com.lixiyu;
import  java.math.BigDecimal;
public  class  Count1 {
     public  static  void  main(String args[]) {
         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);  // 输出计算结果
     }
}

编译运行结果:

1
2
1 + 1 2 !+ 1 3 !··· 1 20 !的计算结果等于:
1.7182818284590452236725888 .............

本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1302890,如需转载请自行联系原作者

相关文章
|
12天前
|
算法 C++
C++求阶乘的深入探索
C++求阶乘的深入探索
12 0
|
4月前
|
C语言
求阶乘之和
【1月更文挑战第18天】C语言实例——求阶乘之和。
16 3
|
10月前
循环习题—阶乘以及阶乘相加
循环习题—阶乘以及阶乘相加
|
10月前
|
机器学习/深度学习
1173:阶乘和
1173:阶乘和
|
11月前
|
算法 Python
计算阶乘之和
计算阶乘之和
60 0
计算n个阶乘之和
方法一: 错误情况截图: 正确情况截图: 方法二: 运行代码: 运行结果截图:
32 0
计算n个阶乘之和
18:等差数列末项计算
18:等差数列末项计算
83 0
L1-013 计算阶乘和 (10 分)
L1-013 计算阶乘和 (10 分)
41 0
7-5 计算阶乘和
7-5 计算阶乘和 对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。