Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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阶乘函数每次返回0_Javascript - Fatal编程技术网

我的JavaScript阶乘函数每次返回0

我的JavaScript阶乘函数每次返回0,javascript,Javascript,我正在学习javascript。我已经写了一个非递归函数,我想返回给定数字的阶乘 function factorialize(n) { for(var i = 0; i < n; i++) { n *= i; } return n; } factorialize(5); 函数因式分解(n){ 对于(变量i=0;i

我正在学习javascript。我已经写了一个非递归函数,我想返回给定数字的阶乘

function factorialize(n) {
  for(var i = 0; i < n; i++) {
     n *= i;
  }
  return n;
}

factorialize(5);
函数因式分解(n){
对于(变量i=0;i
所以结果应该是
120

我一直得到
0

请尝试以下方法:

function factorialize(n) {
  var p=1;
  for(var i = 1; i <=n; i++) {
     p*=i;
  }
  return p;
}
函数因式分解(n){
var p=1;
对于(var i=1;i,您的代码中有两个(嗯,三个)错误:

第一次
i
必须从
1
(而不是
0
)开始,然后上升到
f-1
,否则在第一次迭代时,它将被设置为
0
(其中
f
是需要分解的数字-注意我更改了函数的参数)

其次,不能对
循环的
上限和正在计算的结果都使用
n
,因此需要另一个变量(这就是为什么我添加了
f

最后一个函数也将使用
因子化(0)
为您提供正确的结果


最后,唯一剩下的是检查负
f

您实际上正在这样做


n=(5*0*1*2*3*4*5*6)

你应该从1开始到n

function factorialize(n) {
  var ret = 1;
  for(var i = 1; i <= n; i++) {
     ret *= i;
  }
  return ret;
}
函数因式分解(n){
var-ret=1;

对于(var i=1;i您正在从0循环到n…任何数字乘以0都将是0 另一件事,你循环它直到n,在每个循环中,随着i的增加,它进入无限循环

将其更改为以下内容

函数因式分解(n){
var长度=n;
如果(n==0)返回1;
对于(变量i=1;i
使用您的代码:

  • 循环1:n=5*0 | n=0
  • 环2:n=0*1 | n=0
  • 环3:n=0*2 | n=0
  • 循环4:n=0*3 | n=0
  • 循环5:n=0*4 | n=0
然后返回0

i”必须从1开始,否则,在每个循环中乘以0


我不提供解决方案,因为你已经收到了很多正确的答案。

这不是阶乘的工作方式…..5*4*3*2*1=120这不是阶乘的工作方式。
5!
5*4*3*2*1
。你正在做的是
n*=I
,意思是
n=n*I;
。任何时间
0
都是
0
。你需要调整你的
以进行
循环。仅供参考
(5*0)+(5*1)+(5*2)+(5*3)+(5*4)+(5*5)
是75。这是一个无限循环,不是吗?这将进入无限循环是的,这是一个无限循环。代码已更新,不再是无限循环。
function factorialize(f)
{
    var res,
        i;

    res = 1;

    for( i = 1; i <= f, i++ )
    {
        res *= i;
    }

    return res;
}
function factorialize(n) {
  var ret = 1;
  for(var i = 1; i <= n; i++) {
     ret *= i;
  }
  return ret;
}