是的,这个菜鸟试图理解一个简单的阶乘函数,并对其中的一部分感到困惑。
在
var f = [];
function factorial (num) {
if (num === 0 || num === 1) {
return 1; }
if (f[num] > 0) {
return f[num];}
else {
return f[num] = factorial (num - 1) * num;
}
factorial(4);
究竟是什么
if (num === 0 || num === 1) {
return 1; }
部分做什么,为什么有必要?
谢谢!
答案 0 :(得分:2)
这些是阶乘函数的基本情况。 0! = 1和1! = 1,因此在这些情况下返回这些值。如果你没有基本情况递归,你最终会无限期地递归,而不会产生实际价值。
另一种解决方案是将预先计算的案例添加到f
:
var f = [1, 1];
然后它会被第二个条件抓住。