Javascript中使用while循环的数字阶乘

Javascript中使用while循环的数字阶乘,javascript,Javascript,我需要帮助创建代码来查找数字的阶乘。任务是 创建一个变量来存储答案,并将其初始化为1 创建一个循环,在给定的值、事实 检查事实是一还是零 将事实与答案变量相乘 在循环结束时,减少事实 使用console.log打印答案 伪代码是 while(factorial) if factorial == 0 or factorial == 1 break result => result * factorial factorial => factorial - 1 我

我需要帮助创建代码来查找数字的阶乘。任务是

  • 创建一个变量来存储答案,并将其初始化为1
  • 创建一个循环,在给定的值、事实
  • 检查事实是一还是零
  • 将事实与答案变量相乘
  • 在循环结束时,减少事实
  • 使用console.log打印答案
  • 伪代码是

    while(factorial)
      if factorial == 0 or factorial == 1
        break 
      result => result * factorial
      factorial  => factorial - 1
    
    我下面的代码不完整,因为我被伪代码弄糊涂了

    function nth_fact(nth){
    var a = 1
    while(nth_fact)
    if (nth_fact == 0 || nth_fact == 1){
        break;
    result => result * nth_fact
    nth_fact => nth - 1
    console.log() 
    }
    }
    

    首先,让我们检查出了什么问题:

    var a = 1
    
    什么是
    a
    ?这显然不是变量的好名字。也许可以将其命名为
    结果
    ?这同样适用于
    nth
    ,应命名为
    factorial
    nth\u fact
    而应命名为
    factoriaze
    或其他。您还应始终使用
    以结束语句

    while(nth_fact)
    
    由于while循环包含多个语句(if
    if
    和两个赋值),因此需要在条件之后使用
    {
    在此处打开一个块。
    n\u事实
    指的是函数,您更希望在此处采用
    阶乘

     if (nth_fact == 0 || nth_fact == 1){
       break;
    
    现在为if打开一个block语句,但从未关闭它。因此,在中断后需要另一个
    }

    result => result * nth_fact
    nth_fact => nth - 1
    console.log() 
    
    =>
    是箭头函数表达式,但您需要赋值运算符
    =
    。您还需要将某些内容传递到console.log,例如
    console.log(结果)

    总而言之:

     function factorize(factorial){
       var result = 1;
      while(factorial){
         if (factorial == 0 || factorial == 1){
            break;
         }
         // ?
         factorial = factorial - 1;
         console.log(result);
      }
      return result;
    }
    

    这个伪代码确实令人困惑,因为它所称的阶乘实际上不是阶乘——它是当前值,结果(实际上是我们正在寻找的阶乘)乘以当前值。另外,
    if
    是多余的,因为
    while
    已经检查了相同的条件。所以正确的伪代码应该是

    currentValue = argument
    factorial = 1
    
    while (currentValue > 1)
        factorial = factorial * currentValue
        currentValue = currentValue - 1
    
    // now, 'factorial' is the factorial of the 'argument'
    
    一旦你解决了这个问题,这里有一个奖金分配:

    • 创建一个函数
      范围(a,b)
      ,该函数创建一个从
      a
      b
      的数字数组。例如,
      范围(5,8)=>[5,6,7,8]
    • 创建一个函数
      product(array)
      ,将数组元素彼此相乘。例如,
      product([2,3,7])=>42
    • 使用
      product
      range

      • 您使用了正确的方法。只是语法错了。这是:

        function nth_fact(nth){
        var result = 1 ;
        while(nth){
          if ((nth) == 0 || (nth) == 1)
            break ;
          result = result * nth;
          nth = nth - 1
         }
        console.log(result); 
        return result;
        }
        
        函数阶乘(num){
        var结果=1
        while(num){
        如果((num)==0 | |(num)==1){
        打破
        }否则{
        结果=结果*num;
        num=num-1;
        }
        }
        return`val}的阶乘为${result}`
        }
        让val=prompt(“请输入数字:”,“0”);
        var x=parseInt(val);
        
        log(阶乘(x))
        n\u事实
        是一个函数,假设
        n
        =>
        是一个箭头函数,你想让助理操作员
        =
        在你的伪代码中做什么?你真的认为你能帮助OP吗??