大家帮我想一想为什么? 你打印下 Integer.MAX_VALUE + 1; 看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 int 的范围最大值为 2.147483647E9 ,输入22后,结果值完全超出了int的存储范围,然后前面的很多位就被舍弃了,然后剩下的值算出来可能就是你得到的这个负值了。将返回值类型改为long,可以计算到20,21还是超范围private static long printJiChen(int i) { if(i==1) { return 1; } else return i*printJiChen(i-1); } 用bigdecimal吧! private static BigDecimal printJiChen(BigDecimal i) { if(i.equals(new BigDecimal(1))) { return i; }else{ return i.multiply(printJiChen(i.subtract(new BigDecimal(1)))); } } 哦,了解一下int的范围;int最大值加1等于最小值 java输出菜单树,和javaScript结合的问题 ssh,启动tomcat 出现错误,并且浏览地址是404.但且有那页面在wapp里 Java怎么获得点击网页时的超链接代码 action的问题!!! spring+ibatis+struts的问题(谁知是什么原因造成这样的) 请教关于反射的问题 j2ee中用户管理事务边界的问题? EL表达式中含有<>怎么能正确显示出来? 微服务需要把service和dao层分别打包吗? java工厂方法模式 用JAVA设计在线交友系统。 初学struts和该死的struts2问题
private static long printJiChen(int i) {
if(i==1) {
return 1;
}
else
return i*printJiChen(i-1);
}
if(i.equals(new BigDecimal(1))) {
return i;
}else{
return i.multiply(printJiChen(i.subtract(new BigDecimal(1))));
}
}