在Javascript中使用while循环的数字的因子

时间:2018-02-25 13:38:38

标签: javascript

我需要帮助创建代码才能找到数字的阶乘。任务是

  1. 创建一个变量来存储您的答案并将其初始化为一个
  2. 创建一个以给定值生存的循环,事实
  3. 检查事实是否为零
  4. 将事实与您的答案变量相乘
  5. 在循环结束时减少事实
  6. 使用console.log打印答案
  7. 伪代码是

    limit(endExclusive)

    我的代码不完整,因为我对伪代码感到困惑。

    while(factorial)
      if factorial == 0 or factorial == 1
        break 
      result => result * factorial
      factorial  => factorial - 1
    

4 个答案:

答案 0 :(得分:3)

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

var a = 1

什么是a?它绝对不是变量的好名字。也许将其命名为result?这同样适用于nthfactorial应该命名为nth_factfactorize,而应该是;或者......您还应始终使用while(nth_fact) 来结束陈述。

if

由于你的while循环包含多个语句({和两个赋值),你需要在条件后立即使用nth_fact打开一个块。 factorial指的是函数,您更愿意在此处 if (nth_fact == 0 || nth_fact == 1){ break;

}

现在你打开一个if语句的块语句,但是你永远不会关闭它。因此,休息后你需要另一个result => result * nth_fact nth_fact => nth - 1 console.log()

=>

=是箭头函数表达式,但您需要赋值运算符console.log(result)。你还需要将一些东西传递给console.log,例如 function factorize(factorial){ var result = 1; while(factorial){ if (factorial == 0 || factorial == 1){ break; } // ? factorial = factorial - 1; console.log(result); } return result; }

所有在一起:

<LinearLayout
...
android:background="@android:color/transparent"/>

答案 1 :(得分:1)

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

currentValue = argument
factorial = 1

while (currentValue > 1)
    factorial = factorial * currentValue
    currentValue = currentValue - 1

// now, 'factorial' is the factorial of the 'argument'

一旦你解决了这个问题,这里有一个奖金分配:

  • 创建一个函数range(a, b),用于创建从ab的数字数组。例如,range(5, 8) => [5, 6, 7, 8]
  • 创建一个函数product(array),它将数组元素相互重叠。例如,product([2, 3, 7]) => 42
  • 使用productrange
  • 编写阶乘函数

答案 2 :(得分:0)

function factorial(num) {
         var result = 1
         while (num) {
            if ((num) == 0 || (num) == 1) {
               break;
            } else {
               result = result * num;
               num = num - 1;
            }
         }
         return `The factorial of ${val} is ${result}`
      }

      let val = prompt("Please Enter the number : ", "0");
      var x = parseInt(val);
      console.log(factorial(x));

答案 3 :(得分:-2)

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

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;
}