黑马程序员技术交流社区

标题: 求5的阶乘(n的阶乘 = n*(n-1)*(n-2)*...*1 [打印本页]

作者: aohn1117    时间: 2015-11-26 23:24
标题: 求5的阶乘(n的阶乘 = n*(n-1)*(n-2)*...*1
除了迭代和for循环 还有其他方法吗   
作者: yuanjun52306    时间: 2015-11-26 23:45
还有while循环,do循环。。
作者: 深寒丶    时间: 2015-11-27 00:19
递归
public static void main(String[ ] args){
         System.out.println( show(5));
}
private int show(int i){
    if(i = = 1){
     return 1;
}
    return i *show(i-1);//这就相当于传个5进来,然后5*(5-1)然后调用自己变成4,一直调用到1,执行上面的==1结束
}

作者: lovetonia    时间: 2015-11-27 02:44
本帖最后由 lovetonia 于 2015-11-27 02:47 编辑
  1. class Factorial
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int n=3;
  6.                 System.out.println(getFac(n));
  7.         }

  8.         public static int getFac(int n)
  9.         {
  10.                 if (n<0)
  11.                         throw new RuntimeException("非法");
  12.                 else if (n==1||n==0)
  13.                         return 1;
  14.                 else
  15.                         return n*getFac(n-1);
  16.         }
  17. }
复制代码

同递归,n的阶乘可以由(n-1)的阶乘与n的乘积算得,方法调用方法自己行了,终止条件就n=1的时候,我这个多写了点,因为数学里规定0的阶乘是1
作者: Vincent饭饭    时间: 2015-11-27 16:52
Q前来学习一个!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2