【发布时间】:2010-12-29 07:10:23
【问题描述】:
public static void main (String[] args)
{
System.out.println(factorial(5));
}
public int factorial(int n)
{
if(n <= 1){
return 1;
}
else{
return n * factorial(n - 1);
}
}
我直接在这里写了上面的内容,所以可能无法编译,但认为可以。
谁能简要解释一下它是如何存储的?它从计算 5 * (5-1) 开始,然后到 4 * (4-1) 然后 3 * (3-1)..... 直到它达到 1,这将返回 1 对吗?抱歉这么粗略,我只是想知道如何 这完全有效
谢谢
但随着它的工作 - 它获取各个阶段的值
5*(5-1) 4 * (4-1) ... ... ...
这些是如何存储的,然后再取回或者我错过了什么?
【问题讨论】:
-
也许这个问题对你有帮助:stackoverflow.com/questions/1949454 :-)
-
我想评论一下阶乘是递归的坏示例。
-
澄清一下,它从不计算 5 * (5-1)。它计算 5 * (4!),计算结果为 5 * ( 4 * (3!) ),然后一直持续到 1。
-
我从阿克曼开始。当没有明显的迭代方法时,递归更有意义。
-
这个答案可能会有所帮助:stackoverflow.com/questions/717725/understanding-recursion/…。此外,该问题的其他答案。