黑马程序员技术交流社区

标题: 阶乘递归的问题 [打印本页]

作者: 吴在强    时间: 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