Javascript 因式分解一个数

Javascript 因式分解一个数,javascript,math,factorial,Javascript,Math,Factorial,我正在学习freecodecamp课程,这是创建一个因式分解函数的练习之一,我知道有几种方法可以实现,只是不确定这一个会返回什么5 function factorialize(num) { var myMax = num; var myCounter = 1; var myTotal = 0; for (i = 0; i>= myMax; i++) { num = myCounter * (myCounter + 1); m

我正在学习freecodecamp课程,这是创建一个
因式分解
函数的练习之一,我知道有几种方法可以实现,只是不确定这一个会返回什么5

function factorialize(num) {
    var myMax = num;
    var myCounter = 1;
    var myTotal = 0;

    for (i = 0; i>= myMax; i++) {
        num = myCounter * (myCounter + 1);
        myCounter++;
    }
    return num;
}

factorialize(5);

这是问题的递归解决方案:

function factorialize(num) {
    if(num <= 1) {
        return num
    } else {
        return num * factorialize(num-1) 
    }
}

factorialize(5)
函数因式分解(num){

如果(num这是问题的递归解决方案:

function factorialize(num) {
    if(num <= 1) {
        return num
    } else {
        return num * factorialize(num-1) 
    }
}

factorialize(5)
函数因式分解(num){

如果(Num

也许你考虑另一种方法。< /P> 此解决方案的特点是提供了一个非常简单的方法,以显示递归样式和隐式类型转换可以得到什么:

function f(n) { return +!~-n || n * f(n - 1); }
  • +换算成数字
  • !不
  • ~z~不客气
  • -否定的
函数f(n){return+!~-n | | n*f(n-1)}
var i;
对于(i=1;i<20;i++){
控制台日志(f(i));
}

<代码>。作为控制台包装器{最大高度:100%!重要;顶部:0;} < /代码>

也许您考虑另一种方法。

此解决方案的特点是提供了一个非常简单的方法,以显示递归样式和隐式类型转换可以得到什么:

function f(n) { return +!~-n || n * f(n - 1); }
  • +换算成数字
  • !不
  • ~z~不客气
  • -否定的
函数f(n){return+!~-n | | n*f(n-1)}
var i;
对于(i=1;i<20;i++){
控制台日志(f(i));
}

.as控制台包装{max height:100%!important;top:0;}
要回答您的问题,为什么函数返回5: 您的函数永远不会到达for循环的内部部分,因为您测试i是否大于myMax而不是小于。 因此,您只需返回输入参数,即5


但是循环不计算num的阶乘,它只将(num+1)乘以(num+2);

回答您的问题,为什么您的函数返回5: 您的函数永远不会到达for循环的内部部分,因为您测试i是否大于myMax而不是小于。 因此,您只需返回输入参数,即5


但是循环不计算num的阶乘,它只将(num+1)乘以(num+2);

这里有另一种解决这个问题的方法,我知道它既不是最短的,也不是最简单的,但它仍然是一种有效的方法

function factorialiaze(num){
var myArr = []; //declaring an array.
if(num === 0 || num === 1){
return 1;
}
if (num < 0){ //for negative numbers.
return "N/A";
}
for (var i = 1; i <= num; i++){ // creating an array.
     myArr.push(i);
}
// Reducing myArr to a single value via .reduce:
num = myArr.reduce(function(a,b){
     return a * b;
 });
return num;
}
factorialiaze(5);
函数factorialiaze(num){
var myArr=[];//声明数组。
如果(num==0 | | num==1){
返回1;
}
如果(num<0){//表示负数。
返回“不适用”;
}

对于(var i=1;i,这里有另一种解决这一挑战的方法,我知道它既不是最短的,也不是最简单的,但它仍然是一种有效的方法

function factorialiaze(num){
var myArr = []; //declaring an array.
if(num === 0 || num === 1){
return 1;
}
if (num < 0){ //for negative numbers.
return "N/A";
}
for (var i = 1; i <= num; i++){ // creating an array.
     myArr.push(i);
}
// Reducing myArr to a single value via .reduce:
num = myArr.reduce(function(a,b){
     return a * b;
 });
return num;
}
factorialiaze(5);
函数factorialiaze(num){
var myArr=[];//声明数组。
如果(num==0 | | num==1){
返回1;
}
如果(num<0){//表示负数。
返回“不适用”;
}
对于(var i=1;i请尝试此函数

const factorialize = (num) =>  num === 0 ? 1 : num * factorialize(num-1)
像这样使用它:

factorialize(5) // returns 120
试试这个功能

const factorialize = (num) =>  num === 0 ? 1 : num * factorialize(num-1)
像这样使用它:

factorialize(5) // returns 120
试试这个:

function factorialize(num) {
  var value = 1;
    if(num === 1 || num ===0) {
      return value;
    } else {
      for(var i = 1; i<num; i++) {
        value *= i;
      }
      return num * value;
  }
}
factorialize(5);
函数因式分解(num){
var值=1;
如果(num==1 | | num==0){
返回值;
}否则{
对于(var i=1;i尝试以下方法:

function factorialize(num) {
  var value = 1;
    if(num === 1 || num ===0) {
      return value;
    } else {
      for(var i = 1; i<num; i++) {
        value *= i;
      }
      return num * value;
  }
}
factorialize(5);
函数因式分解(num){
var值=1;
如果(num==1 | | num==0){
返回值;
}否则{

对于(var i=1;i我的解决方案符合

函数分解器(int){

如果(int我的解决方案符合

函数分解器(int){
if(int
//我的解决方案
const factorialize=num=>{
设newNum=1;
for(设i=1;i
//我的解决方案
const factorialize=num=>{
设newNum=1;

对于(让i=1;我希望您完成此挑战。否则,codecamp;)的意义是什么我知道,我找到了另一种方法,只是它困扰着我这一个是不工作的,即使数学得到的数字是正确的,我的问题是returnOne提示尝试递归代码变得很好。最好的方法是阶乘!!我们希望你完成这个挑战。否则codecamp;)我知道,我找到了另一种方法,只是它困扰着我这一个不起作用,即使得到数字的数学是正确的,我的问题是返回一个提示尝试递归代码变得很好。最好的方法是阶乘!!谢谢!仍然熟悉递归函数谢谢!仍然熟悉递归函数请不要发布只将代码作为答案,但也要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,并且更有可能吸引更多的选票。请不要只将代码作为答案发布,还要解释代码的作用以及它如何解决问题问题的问题。有解释的答案通常更有帮助,质量更好,更有可能吸引更多的选票。