问题描述:
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! <