Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 Js函数顶部计算阶乘不起作用_Javascript - Fatal编程技术网

Javascript Js函数顶部计算阶乘不起作用

Javascript Js函数顶部计算阶乘不起作用,javascript,Javascript,我是从coderbyte做这个挑战的,你必须做一个函数来计算给定数字的阶乘,这是我不太有效的解决方案 function firstFactorial(num) { for (var i = num; i == 1; i--) { num = num * i; } return num; } 它只是返回我作为参数传递的任何数字,我试图理解出了什么问题。它是与循环有关还是与变量范围有关 i==1是在循环条件下连接的,对于除1之外的所有数字,它将始终为false

我是从coderbyte做这个挑战的,你必须做一个函数来计算给定数字的阶乘,这是我不太有效的解决方案

function firstFactorial(num) { 

  for (var i = num; i == 1; i--) {
      num = num * i;
  }
  return num;     
}
它只是返回我作为参数传递的任何数字,我试图理解出了什么问题。它是与循环有关还是与变量范围有关

  • i==1
    是在循环条件下连接的,对于除1之外的所有数字,它将始终为false。因此,它将始终返回相同的数字作为结果

  • i=num
    应该是
    i=num-1
    才能得到正确的阶乘

  • 函数FirstFactorial(num){
    对于(变量i=num-1;i>=1;i--){
    num=num*i;
    }
    返回num;
    }
    
    log(FirstFactorial(5))
    您的
    for
    循环有点混乱。现在应该可以了

    函数阶乘(num){
    对于(变量i=num-1;i>0;i--){
    num*=i;
    }
    返回num;
    }
    
    console.log(阶乘(5))您的问题是您有一个循环条件
    i==1
    。对于阶乘,它应该是
    i>=1
    ,或者
    i>1
    ,这取决于您使用的算法。我对阶乘函数的看法是:

    function calculate(factorial) {
        var newFactorial = factorial;
        while (factorial > 1) {
            factorial--;
            newFactorial *= factorial;
        }
        return newFactorial;
    }
    

    这就是你的全部代码吗?
    i==1
    是(var i=num;i==1;i--){
    的一个奇怪的循环条件,只有在
    i==1
    时才会执行