2015-05-17 17 views
-5

我正在尝试创建一个脚本,它将返回输入数的阶乘作为挑战的一部分。当我尝试运行它时,它会返回适当的因子,但显然我以某种方式做错了。在JavaScript中返回析构因子

它看起来像这样:

function FirstFactorial(num) { 
    if (num > 1) { 
    var x = num; 
    for (var i = 1; i < x; i++) { 
     num = num * i; 
    } 
    } else if (num === 1) { 
    return 1; 
    } else { 
    console.log("That's not a number!"); 
    } 
    return num; 
}  

然后我试图做这样的,但它仍然无法正常工作!

function FirstFactorial(num) { 

    if (num < 0) { 
    num = 0; 
    console.log("You have to input a number!"); 
    } 

    if (num === 0) { 
    return 1; 
    } 

    return num * FirstFactorial(num - 1); 
} 
+2

你说它的工作原理,但“我以某种方式做错了”......告诉我们更多? – KenD

+3

*“但显然我做错了。”*这是什么意思? –

+2

“寻求调试帮助的问题(”为什么这个代码不工作?“)必须包含所需的行为,特定的问题或错误以及在问题本身中重现问题所需的最短代码。声明对其他读者没有用***“ –

回答

1

最有可能的原因是他们期望并希望您使用递归(一种自我调用的函数)。

如果您考虑阶乘因子,每个因子都建立在前一个阶段的结果上,这是使用递归的经典案例。

(请注意,我特别不发布代码递归这样做,因为那时这里的关键是工作,如何做到这一点。)