long sum = 0;
for (int i = 1; i <=100; i++) {
long item=1;
for(int j=1;j<=i;j++){
item=item*j;
}
sum=sum+item;
}
System.out.println(sum);输出结果:1005876315485501977
经过分析,这个答案是错误的,1!+2!+3!+4!+.....+100!的结果的个位数肯定是3的,上面的代码的逻辑的问题都没有问题,验算过。错误的地方是item变量,我把它设置为long类型,就出现了1005876315485501977这个结果,为什么不可设置成long类型?求解
我把item变量设置成int类型,结果溢出,100阶乘的和超过long的内存空间,采用BigInteger类去操作,输出结果正确。不懂的就是为什么item变量类型不可以设置成long类型。朋友,解答一下。thx
Chengl
大咪
随时随地看视频慕课网APP
相关分类