【发布时间】:2015-04-09 17:18:30
【问题描述】:
我了解“a”解决方案是:
function Factorial(number)
{
if(number == 0 || number == 1){
return 1;
}
return number * Factorial(number -1);
}
我想了解到底发生了什么。当 number == 1 时,我了解一直到最后部分的情况。
如果我们举一个简单的例子,比如 3!
- 3 不等于 0 或 1 所以我们返回 3 * Factorial(2)
- 2 不等于 0 或 1 所以我们返回 2 * Factorial(1)
- 1 等于 1 所以我们返回 1
我们如何知道何时停止?是我们返回 1 告诉函数停止的事实吗?
如果是这样,为什么我们第一次返回 3 * Factorial(2) 时函数没有停止?是不是因为它正在返回一个函数,所以它必须继续,直到它不再返回一个函数?
谢谢
【问题讨论】:
-
“是不是因为它正在返回一个函数,所以它必须继续直到它不再返回一个函数?”
-
请注意,如果不使用正整数调用此函数,则会创建一个无限循环。
-
最后 发生的事情是 3 乘以从
Factorial(2)返回的值。这就是最终的返回值。在Factorial(2)完成之前,该步骤无法进行,而Factorial(2)在Factorial(1)完成之前无法完成。
标签: javascript