求阶乘n!分别采用int和long数据类型,看n在什么取值范围内,结果不会溢出
你是要程序判断到多少阶乘会溢出吗
public static void main(String[] args) {
//最大int值
int maxInt = Integer.MAX_VALUE;
int n = 1;
int sum = 1;//0的阶乘
boolean flag = true;
while(flag){
sum *= n;//从1的开始,计算n的阶乘
n++;
if(maxInt / sum < n){
System.out.println(n+"! 会溢出");
flag = false;
}
}
}
Long
public static void main(String[] args) {
//最大int值
long maxInt = Long.MAX_VALUE;
int n = 1;
long sum = 1;//0的阶乘
boolean flag = true;
while(flag){
sum *= n;//从1的开始,计算n的阶乘
n++;
if(maxInt / sum < n){
System.out.println(n+"! 会溢出");
flag = false;
}
}
}
这个你看int的范围不就好了,另外求n的阶乘使用递归即可,题目都会规定int类型整数n不能超过10,超过了就会报错,溢出
int 最大到12!
long 最大到20!
超过就会溢出