答案 0 :(得分:1)
在缺少的return
语句旁边,有一些注释:
对结果使用默认值。这样就可以在没有给定起始值的情况下调用该函数,并且只允许使用一个参数。
仅进行一次递归调用,而不将else
与return
结合使用。 return
语句省略了以下else
语句。只需继续使用没有else
部分的代码即可。
在函数末尾返回一个递归调用,以允许使用编译器获取TCO(尾调用优化)。这不会扩展堆栈,因为最后一次调用将替换为实际的递归调用。此优化可能未实际实现。
如果只需要减小的值而无需再次使用减小的值,则不要使用减量运算符。
将计算移到函数调用中。
function factorial(num, result = 1) {
console.log('num', num);
if (num === 0) return result;
return factorial(num - 1, result * num);
}
console.log(factorial(3))