我有这个简单的阶乘函数。它适用于递归。但我最终得到的数字是NaN。我期待输出为6,阶乘为3.问题是因为我将x定义为全局变量?如果是的话,你如何定义一个变量作为局部函数内的函数,而不会使其在递归中发生变化。递归factiorial。我为什么得到NaN
var x;
function factorial(num)
{
if (num > 0) {
x = num * factorial(num - 1);
}
return x;
}
console.log(factorial(3));
'变种X;' - 初始化? – thefourtheye
当您实现递归算法时,最好在参数中维护状态,而不是依赖于自由变量。目前你的实现不能计算两倍的因子。 – zerkms
有没有办法在函数内初始化它,但每次函数运行时都没有初始化,因为这是递归@thefourtheye – Mozein