关于100的阶乘

昨天有小伙伴问我一个问题,100的阶乘怎么算,第一反应是想到递归,但是有个问题就是,算出来的结果肯定是远远超出Long的范围的,因此这个肯定是行不通的,于是我开始想,java里面处理很大的数值类型就是bigdecimal和biginteger,biginteger有个方法叫做mutiply,就是和自身相乘,里面需要传入的数据类型同样也需要是个biginteger类型,而一个string类型的可以放入biginteger的构造方法参数中,转换成biginteger,那么这就简单了,既然string都可以,那int转成string何其简单啊,用string.valueOf()方法就可以,代码如下:


解释一下,首先把1赋值给变量a,以字符串的形式传进去,然后使用for循环,每次乘以a,那么这个i需要转成biginteger类型,在biginteger的构造方法中传一个string类型的进去,把i转成string类型,就可以轻松完成啦,最后的结果是158位的。

猜你喜欢

转载自blog.csdn.net/gml0000/article/details/80603692