关于#java#的问题:求n!分别采用int和long数据类型,结果不会溢出

求阶乘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!
超过就会溢出