Javascript 为什么';这不是给我阶乘吗?
我只是想知道这样写代码不会打印阶乘的原因是什么?相反,我只得到56,也就是8*7。我想如果我使用for循环,它会继续运行吗?当使用return时,它会转义函数并返回第一个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; }
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的要求,解释递归方法中返回的工作方式
关于复发