Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么';这不是给我阶乘吗?_Javascript_For Loop_Factorial - Fatal编程技术网

Javascript 为什么';这不是给我阶乘吗?

Javascript 为什么';这不是给我阶乘吗?,javascript,for-loop,factorial,Javascript,For Loop,Factorial,我只是想知道这样写代码不会打印阶乘的原因是什么?相反,我只得到56,也就是8*7。我想如果我使用for循环,它会继续运行吗?当使用return时,它会转义函数并返回第一个num*I,为了防止它,在函数中创建一个局部变量,并在循环结束时返回该变量 示例: function FirstFactorial(num) { for(var i = num - 1; i > 0; i--) { return num * i; }

我只是想知道这样写代码不会打印阶乘的原因是什么?相反,我只得到56,也就是8*7。我想如果我使用for循环,它会继续运行吗?

当使用return时,它会转义函数并返回第一个
num*I
,为了防止它,在函数中创建一个局部变量,并在循环结束时返回该变量

示例:

function FirstFactorial(num) { 
      for(var i = num - 1; i > 0; i--) {
           return num * i; 
      }        
    };

  console.log(FirstFactorial(8))

当您使用return时,它会转义函数并返回第一个
num*i
,为了防止它,在函数中生成一个局部变量,并在循环结束时返回该变量

示例:

function FirstFactorial(num) { 
      for(var i = num - 1; i > 0; i--) {
           return num * i; 
      }        
    };

  console.log(FirstFactorial(8))

当您使用return时,它会转义函数并返回第一个
num*i
,为了防止它,在函数中生成一个局部变量,并在循环结束时返回该变量

示例:

function FirstFactorial(num) { 
      for(var i = num - 1; i > 0; i--) {
           return num * i; 
      }        
    };

  console.log(FirstFactorial(8))

当您使用return时,它会转义函数并返回第一个
num*i
,为了防止它,在函数中生成一个局部变量,并在循环结束时返回该变量

示例:

function FirstFactorial(num) { 
      for(var i = num - 1; i > 0; i--) {
           return num * i; 
      }        
    };

  console.log(FirstFactorial(8))
尝试以下方法:

function FirstFactorial(num) {
    var result=1;
    for(var i = num - 1; i > 0; i--) {
        result *= i; 
    }        
    return result
};
当您说
return
时,它将中止方法调用,并返回到父级,其中包含您返回的值(如果返回)。因此,在您的情况下,它将返回8*7=56

function FirstFactorial(num) {
    var result=1;
    for(var i = num - 1; i > 0; i--) {
        result *= i; 
    }        
    return result
};
当您说
return
时,它将中止方法调用,并返回到父级,其中包含您返回的值(如果返回)。因此,在您的情况下,它将返回8*7=56

function FirstFactorial(num) {
    var result=1;
    for(var i = num - 1; i > 0; i--) {
        result *= i; 
    }        
    return result
};
当您说
return
时,它将中止方法调用,并返回到父级,其中包含您返回的值(如果返回)。因此,在您的情况下,它将返回8*7=56

function FirstFactorial(num) {
    var result=1;
    for(var i = num - 1; i > 0; i--) {
        result *= i; 
    }        
    return result
};

当您说
return
时,它将中止方法调用,并返回到父级,其中包含您返回的值(如果返回)。因此,在您的情况下,它将返回8*7=56

当您在循环中第一次迭代时返回值,而不是在循环结束时返回值。这应该可以做到:

function FirstFactorial(num) { 
  var fact = 1;
  for(var i = num; i > 0; i--) {
       fact = fact * i; //here you are returning on your first iteration iteslef and hence issue
  }
  return fact;        
};

console.log(FirstFactorial(8))

在循环中第一次迭代时返回值,而不是在循环结束时返回值。这应该可以做到:

function FirstFactorial(num) { 
  var fact = 1;
  for(var i = num; i > 0; i--) {
       fact = fact * i; //here you are returning on your first iteration iteslef and hence issue
  }
  return fact;        
};

console.log(FirstFactorial(8))

在循环中第一次迭代时返回值,而不是在循环结束时返回值。这应该可以做到:

function FirstFactorial(num) { 
  var fact = 1;
  for(var i = num; i > 0; i--) {
       fact = fact * i; //here you are returning on your first iteration iteslef and hence issue
  }
  return fact;        
};

console.log(FirstFactorial(8))

在循环中第一次迭代时返回值,而不是在循环结束时返回值。这应该可以做到:

function FirstFactorial(num) { 
  var fact = 1;
  for(var i = num; i > 0; i--) {
       fact = fact * i; //here you are returning on your first iteration iteslef and hence issue
  }
  return fact;        
};

console.log(FirstFactorial(8))

通过8,乘以8*7,返回56。你没有积累。这里需要一些递归:

function FirstFactorial(num) { 
      var result = num;
      for(var i = num - 1; i > 0; i--) {
           result = result * i; 
      }
      return result;        
    };

  console.log(FirstFactorial(8))

通过8,乘以8*7,返回56。你没有积累。这里需要一些递归:

function FirstFactorial(num) { 
      var result = num;
      for(var i = num - 1; i > 0; i--) {
           result = result * i; 
      }
      return result;        
    };

  console.log(FirstFactorial(8))

通过8,乘以8*7,返回56。你没有积累。这里需要一些递归:

function FirstFactorial(num) { 
      var result = num;
      for(var i = num - 1; i > 0; i--) {
           result = result * i; 
      }
      return result;        
    };

  console.log(FirstFactorial(8))

通过8,乘以8*7,返回56。你没有积累。这里需要一些递归:

function FirstFactorial(num) { 
      var result = num;
      for(var i = num - 1; i > 0; i--) {
           result = result * i; 
      }
      return result;        
    };

  console.log(FirstFactorial(8))
使用:

它将返回
num*(num-1)
值。因为它将在第一次迭代中返回值

而是使用:

使用递归:

for(var i = num - 1; i > 0; i--) {
    return num * i; 
}
或:


编辑:根据OP的要求,解释递归方法中返回的工作方式

关于递归:

fact=num;
for(var i = num - 1; i > 0; i--) {
    fact*=i; 
}
return fact;
实际上,首先将
num
FirstFactorial(num-1)
的返回值相乘,这将是
(n-1)。因此,实际发生的情况是:

  • FirstFactorial(num-1)
    被调用。(使用参数
    num-1
    调用FirstFactorial函数
  • FirstFactorial(num-1)
    的返回值是
    (num-1)!
    乘以
    num
    的值,得到
    num!
  • 当与参数
    num
    FirstFactorial(num)
    一起传递时,函数
    FirstFactorial()
    返回此值(
    num!
  • 现在调用
    FirstFactorial(num-1)
    内部的
    FirstFactorial(num)
    ,FirstFactorial函数将再次执行,检查第一个if条件。如果失败,它将返回
    (n-1)*FirstFactorial(num-1-1)的值
    。如果满足条件并且返回值而不再次调用
    FirstFactorial
    ,则此操作将递归到第一次

    您还可以将该函数视为:

    return num*FirstFactorial(num-1)
    
    使用:

    它将返回
    num*(num-1)
    value。因为它将在第一次迭代中返回值

    而是使用:

    使用递归:

    for(var i = num - 1; i > 0; i--) {
        return num * i; 
    }
    
    或:


    编辑:根据OP的要求,解释递归方法中返回的工作方式

    关于递归:

    fact=num;
    for(var i = num - 1; i > 0; i--) {
        fact*=i; 
    }
    return fact;
    
    实际上,首先将
    num
    FirstFactorial(num-1)
    的返回值相乘,这将是
    (n-1)!
    。因此实际发生的情况是:

  • 调用
    FirstFactorial(num-1)
    (使用参数
    num-1
    调用FirstFactorial函数)
  • FirstFactorial(num-1)
    的返回值是
    (num-1)!
    乘以
    num
    的值,得到
    num!
  • 当与参数
    num
    FirstFactorial(num)
    一起传递时,函数
    FirstFactorial()
    返回此值(
    num!
  • 现在调用
    FirstFactorial(num-1)
    内部的
    FirstFactorial(num)
    ,FirstFactorial函数将再次执行,检查第一个if条件。如果失败,它将返回
    (n-1)*FirstFactorial(num-1-1)的值
    。如果满足条件并且返回值而不再次调用
    FirstFactorial
    ,则此操作将递归到第一次

    您还可以将该函数视为:

    return num*FirstFactorial(num-1)
    
    使用:

    它将返回
    num*(num-1)
    value。因为它将在第一次迭代中返回值

    而是使用:

    使用递归:

    for(var i = num - 1; i > 0; i--) {
        return num * i; 
    }
    
    或:


    编辑:根据OP的要求,解释递归方法中返回的工作方式

    关于复发