对 JavaScript 中的数字进行因式分解

Factoralize a Number in JavaScript

我目前正在参加免费代码训练营的课程,它要求我 return 任何给定数字的阶乘。但是,我有点卡在这个问题上(请原谅我,数学不是我的强项,哈哈)。这是它的要求:

If the integer is represented with the letter n, a factorial is the product of all positive integers less than or equal to n. Factorials are often represented with the shorthand notation n! For example: 5! = 1 * 2 * 3 * 4 * 5 = 120f

这是起始代码:

function factorialize(num) {
return num;
}

factorialize(5);

我不是在寻找问题的直接答案,但我真的很想知道如何开始。提前感谢您的帮助!

注意:此回复解释了要使用哪种类型的循环,并提示如何格式化循环以获得 5 的阶乘,以在使用 num

之前获得基本格式

给出了5个例子! = 1 * 2 * 3 * 4 * 5 = 120,您可以看到有一个数字模式,从 1 开始,以 5 结束,然后递增 1。您还可以看到,对于 1 到 5 之间的每个数字,您需要乘以下一个,一遍又一遍,以获得阶乘。

for 循环用于将特定代码块重复已知次数。在这种情况下,您知道次数是 5(又名 1、2、3、4、5)。具体的代码块是您需要根据您尝试获得的答案来计算的(在本例中为 5!= 1*2*3*4*5 = 120)。

For 循环提示: 在考虑如何编写 for 循环的条件时: 从1开始递增,从5开始递增,递增1(1,2,3,4,5)

在编写将作用于每个数字的代码块时,请考虑每个数字需要具有的关系,以便您的代码基本上这样做: 1*2*3*4*5

function factorialize(num) {
    var myNum = 1;
    for (i=1; i<=num;i++){
        myNum = myNum * i;
    }
    return myNum;
}
factorialize(5);

首先我创建了一个 var 来保存我们的答案 (myNum)。

然后我创建了一个循环,从 1 开始一直到(包括)我们要进行阶乘的数字的值... 在循环运行时,我们将 myNum 乘以 i 的值,将新值保存为 myNum,因此它将乘以循环中的下一个数字...

一旦循环结束,我们return我们的答案使用"return myNum"。

有两种方法可以做到这一点。第一个在循环中,第二个在递归函数中。

循环版是这样的:

function factorialize(num) {

  for(var answer=1;num>0;num--){
    answer*=num;
  }

  return answer;
}

递归就是这样。

function factorialize(num) {

  if(num===0){
    return 1;
  }
  else{
    return num*factorialize(num-1);
  }
}

它们都适用于所有正整数。