黑马程序员技术交流社区
标题:
阶乘递归的问题
[打印本页]
作者:
吴在强
时间:
2013-2-6 13:54
标题:
阶乘递归的问题
代码如下:
package cn.question.test;
public class FactorialTest {
/**
* @param args
*/
public static void main(String[] args) {
doFactorial(5);
System.out.println("------------------------");
long a = 0;
a = doFactorila2(5);
System.out.println("a="+a);
}
//遍历循环
public static long doFactorial(long n){
long factors = 1;
if(n<0){
System.out.println("输入数字不符合规范");
}
else if(n == 0 || n == 1){
return 1;
}
else{
for(int i =1;i<n;i++){
factors = factors * i;
}
System.out.println("factors="+factors);
}
return factors;
}
//递归方法
public static long doFactorila2(long n){
//long factors = 1;
long factors = 0;
if(n<0){
System.out.println("输入数字不符合规范");
}
else if(n != 0){
return factors = n* doFactorila2(n-1);
}
System.out.println("factors输出结果为"+factors);
return factors;
}
}
结果为:
factors=24
------------------------
factors输出结果为0
a=0
为什么我第二个递归方法输出的结果为零呢,它跟第一个递归方法传入的参数一样!我的递归也应该没问题啊!
作者:
陈科宇
时间:
2013-2-6 14:27
public static long doFactorila2(long n){
//long factors = 1;
long factors = 0;
//帅哥,看到没有,你的factors=0.呵呵。
if(n<0){
System.out.println("输入数字不符合规范");
}
else if(n != 0){
return factors = n* doFactorila2(n-1);
}
System.out.println("factors输出结果为"+factors);
return factors;
}
}
作者:
dzr19850306
时间:
2013-2-6 15:29
public static long doFactorila2(long n){
//long factors = 1;
long factors = 0;
if(n<0){
System.out.println("输入数字不符合规范");
}
else if(n != 0){
return factors = n* doFactorila2(n-1);
}
System.out.println("factors输出结果为"+factors);
return factors;
}
}
这个n=0怎么办啊。n=1呢???你把这两个规定下数据就好啦。
作者:
吴在强
时间:
2013-2-6 23:14
嗯,好的,谢谢!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2