java long 运算_Java Long类型,阶乘计算

  • Post author:
  • Post category:java


问题描述:

n! <= 2^63-1 , 求最大的n.

问题:如果不用java自带的 Long.MAX_VALUE,这个值,如何表示Long类型的最大值,我的表示方法为啥不对?

我的代码如何修改才能得到正确的值呢?(因为我观察到factorial这个变量从某一刻开始变成0,可能那个时刻就已经求到了最大的n? long类型的factorial范围不够用了?)

有什么优化的算法呢?

/**

* calculate the max value of n that n! < maxValueOf(Long)

* long 8 bytes

* @return max n

*/

private static int findMax() {

long maxLongValue = Long.MAX_VALUE;//(2<

System.out.println(maxLongValue);

// n! <= 2^63-1, we recommend algorithm

int n = 5;

while(true){

long factorial =n; //watch out here long

int origin = n;

while(n>1){

factorial *= (n-1);

n–;

}

———-下面是结果

/**

* calculate the max value of n that n! <



版权声明:本文为weixin_35720035原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。