您的位置:首页 > 其它

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

2018-01-10 22:16 288 查看
思路:假设372为一个大数字,18为一个普通int型数字



代码如下:

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<arr.length;i++){
    flag++;
    if(arr[i]!=0){
    break;
    }
     }
     for(int i=flag;i<arr.length;i++){
    System.out.print(arr[i]);
     }
}
static int[] demo(int[] arr,int num){
for(int i=0;i<arr.length;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;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: