返回JavaScript中的阶乘

返回JavaScript中的阶乘,javascript,factorial,Javascript,Factorial,我试图创建一个脚本,作为质询的一部分返回输入数字的阶乘。当我尝试运行它时,它返回正确的阶乘,但显然我做得不对 看起来是这样的: 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 {

我试图创建一个脚本,作为质询的一部分返回输入数字的阶乘。当我尝试运行它时,它返回正确的阶乘,但显然我做得不对

看起来是这样的:

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;
}     
函数FirstFactorial(num){ 如果(num>1){ var x=num; 对于(变量i=1;i 然后我试着这样做,但还是不行

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);
}
函数FirstFactorial(num){ if(num<0){ num=0; log(“您必须输入一个数字!”); } 如果(num==0){ 返回1; } 返回num*FirstFactorial(num-1); }
最可能的原因是,他们期望并打算让您使用递归(一种调用自身的函数)

如果您考虑阶乘,每个阶乘都建立在前一个阶乘的结果之上,这是使用递归的典型情况


(请注意,我并没有发布递归代码,因为这里的重点大概是让找出如何实现它。)

您说它是可行的,但“我不知怎么做错了”。。。“告诉我们更多?”但显然我不知怎么做错了。“这意味着什么?”寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误,以及在问题本身中重现这些问题所需的最短代码。没有明确问题说明的问题对其他读者没有帮助。“我正在使用的网站(coderbyte.com)告诉我,我没有正确完成任务。。。我和你一样困惑。@SashiKant:如果OP没有使用
x
,下面的循环永远不会结束。