小算法,关于阶乘数字过大溢出的解决办法

思路:假设372为一个大数字,18为一个普通int型数字

小算法,关于阶乘数字过大溢出的解决办法_第1张图片

代码如下:

public class Demo01 {
//求一个数的阶乘,当求一个很大的数的阶乘,会造成数据溢出
//解决办法:让数组解决

public static void main(String[] args) {
int[] arr=new int[100];
    arr[arr.length-1]=1;
    int n=50;
    int flag=-1;
     for(int i=1;i<=n;i++){
    arr=demo(arr,i);
     }
     for(int i=0;i    flag++;
    if(arr[i]!=0){
    break;
    }
     }
     for(int i=flag;i    System.out.print(arr[i]);
     }
}
static int[] demo(int[] arr,int num){
for(int i=0;i    arr[i]*=num;//计算每一位
    }
    //进和留
    for(int i=arr.length-1;i>0;i--){
    arr[i-1]+=arr[i]/10;
    arr[i]=arr[i]%10;
    }
    return arr;
}
}

你可能感兴趣的:(小算法,关于阶乘数字过大溢出的解决办法)