黑马程序员技术交流社区
标题:
递归的问题
[打印本页]
作者:
李晓璐
时间:
2011-7-31 19:45
标题:
递归的问题
class factorialTest{
static int factorial(int arg){
if(arg==0){ return 1; }else{ return arg*factorial(arg-1); }
}
public static void main(String[] args){
System.out.println(factorial(0));
System.out.println(factorial(1));
System.out.println(factorial(2));
System.out.println(factorial(20));
System.out.println(factorial(50));
}
}
答案是:1
1
2
-2102132736
0
为什么factorial(20)是负数?为什么factorial(50)是0?
作者:
匿名
时间:
2011-7-31 19:50
是越界了,你那个数儿太大了,像下面这样就可以了
public class factorialTest{
static double factorial(int arg){
if(arg==0){
return 1;
}
else{
return arg*factorial(arg-1);
}
}
public static void main(String[] args){
System.out.println(factorial(0));
System.out.println(factorial(1));
System.out.println(factorial(2));
System.out.println(factorial(20));
System.out.println(factorial(50));
}
}
运行结果:
1.0
1.0
2.0
2.43290200817664E18
3.0414093201713376E64
作者:
匿名
时间:
2011-8-1 12:59
我觉得那个参数类型改成long更合适
作者:
匿名
时间:
2011-8-1 18:34
这是一个计算阶乘的程序,20!数字太大,越界了,int类型表示不了这么大的数字。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2