对 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);
}
}
它们都适用于所有正整数。
我目前正在参加免费代码训练营的课程,它要求我 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);
}
}
它们都适用于所有正整数。