Java实现 100!的阶乘

刚学Java循环,求阶乘问题的时候,发现求10!可以用int类型存值,

那么100!呢?用Long? 发现用Long类型,运行输出的结果是0,这不对啊 ,

到底是什么原因呢? 用DeBug调试发现,100!数据太大,Long的数据存储空间8字节不够用溢出了。
那么到底用什么方法来实现100!呢?

如下代码:

 1 public class Demo01 {
 2     public static void main(String[] args) {
 3         System.out.println(factorial(100));
 4     }
 5 
 6     public static String  factorial(int count) {
 7         BigInteger result = new BigInteger(String.valueOf(1));
 8        for (int i = 1; i <= count; i++) {
 9            BigInteger i_value = new BigInteger(String.valueOf(i));
10            result = result.multiply(i_value);
11        }
12        return result.toString();
13     }
14 }

 解决了内存溢出的问题

posted @ 2018-08-09 23:45  Joe0428  阅读(3056)  评论(0编辑  收藏  举报