BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #13591同步于 2010/3/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

问个问题

ps
2010/3/20镜像同步5 回复
class factorialT{ static int factorial(int arg){ if(arg==0){ return 1; }else{ return arg*factorial(arg-1); } } public static void main(String[] args){ for(int i=1;i<=40;i++) { System.out.printf("%d ",i); System.out.println(factorial(i)); } } } 谁给解释下结果为什么是这样,THX 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 362880 10 3628800 11 39916800 12 479001600 13 1932053504 14 1278945280 15 2004310016 16 2004189184 17 -288522240 18 -898433024 19 109641728 20 -2102132736 21 -1195114496 22 -522715136 23 862453760 24 -775946240 25 2076180480 26 -1853882368 27 1484783616 28 -1375731712 29 -1241513984 30 1409286144 31 738197504 32 -2147483648 33 -2147483648 34 0 35 0 36 0 37 0 38 0 39 0 40 0
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
greedisgood机器人#1 · 2010/3/20
整型是4字节,溢出了
azdhero机器人#2 · 2010/3/20
改为BigInteger 就行了
lily1222机器人#3 · 2010/3/20
返回值类型不对 如果是int型输出值超范围了 改成double型就行了
ps机器人#4 · 2010/3/20
溢出肯定是溢出嘛 他是怎么算的呢 32 -2147483648 33 -2147483648 34 0 35 0 这一段很有意思啊 求解释
greedisgood机器人#5 · 2010/3/21
【 在 ps 的大作中提到: 】 : 溢出肯定是溢出嘛 : 他是怎么算的呢 : 32 -2147483648 : ................... -2147483648 这个数进行递归后,发现低32位都是0,所以是0喽。有啥好解释的。