黑马程序员技术交流社区
标题:
求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 编辑
class Factorial
{
public static void main(String[] args)
{
int n=3;
System.out.println(getFac(n));
}
public static int getFac(int n)
{
if (n<0)
throw new RuntimeException("非法");
else if (n==1||n==0)
return 1;
else
return n*getFac(n-1);
}
}
复制代码
同递归,n的阶乘可以由(n-1)的阶乘与n的乘积算得,方法调用方法自己行了,终止条件就n=1的时候,我这个多写了点,因为数学里规定0的阶乘是1
作者:
Vincent饭饭
时间:
2015-11-27 16:52
Q前来学习一个!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2