0

是的,这个菜鸟试图理解一个简单的阶乘函数,但对其中的一部分感到困惑。

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; }

部分做,为什么有必要?

谢谢!

4

1 回答 1

2

这些是阶乘函数的基本情况。0!= 1 和 1!= 1,因此它在这些情况下返回这些值。如果你在没有基本情况的情况下递归,你最终会无限期地递归,不会产生任何实际价值。

另一种解决方案是将预先计算的那些案例添加到f

var f = [1, 1];

然后它将被第二个条件捕获。

于 2013-06-30T23:02:15.613 回答