尽管变量具有值,但函数返回undefined

时间:2015-06-26 10:45:35

标签: javascript function factorial

这是代码。你可以自己测试一下。

请解释:)

var factorial = 1;

function factorialize(num) {
  factorial *= num;

   if (num == 1) {
     var result = factorial;

     return result;
   }

   factorialize(num-1);

}

factorialize(5);

2 个答案:

答案 0 :(得分:3)

它不需要全局变量也没有局部变量。

function factorialize(num) {
    if (num === 1) {
        return 1;
    }
    return num * factorialize(num - 1);
}

console.log(factorialize(5));

// or a very short version:
function f(n) { return +!~-n || n * f(n - 1); }

console.log(f(10)); 

答案 1 :(得分:0)

如果使用递归,则不需要一些变量。这是关于递归的最有趣的事情之一。

看看这个更短的递归解决方案:

function factorial(n)
{
    return (n === 1) ? 1 : n * factorial(n - 1);
}

for (var i = 1; i <= 7; i++)
    document.getElementById("myDiv").innerHTML += (i + "! = " + factorial(i) + "<br/>");
<div id="myDiv">
</div>