我有一个问题,理解为什么在FOR循环中的RETURN总是返回给我初始事实值(让事实= 1):
const factorial = function(a) {
let fact=1;
if(a===0){
return 1;
}
else{
for(let i=1; i<=a; i++){
fact*=i;
return fact;** // This return
}
return fact
}
return fact;
};
//Result for all values e.g 1,5,10 is always 1, as in initial let fact =1
当我去掉它的时候,阶乘函数完全正常,我不知道为什么会这样:
const factorial = function(a) {
let fact=1;
if(a===0){
return 1;
}
else{
for(let i=1; i<=a; i++){
fact*=i;
//Nothing
}
return fact
}
return fact;
};
// Code works fine, I receive factorial correctly
我本来希望返回初始值的阶乘,结果却得到了变量的初始值(1)。
2条答案
按热度按时间yhxst69z1#
如果我没理解错的话,您可能会想,为什么在第一段代码中,不管输入值是什么,返回值都是
1
,这是因为在for
循环中有一个return
语句,这意味着for循环只进入一次,然后退出时返回值为1。这意味着你永远都不能计算阶乘的值,因为 fact = 1 * 2 * 3 * ...,你只需要做第一步,也就是 fact = 1z2acfund2#
return
运算符未仅中断for
循环:it goes deeper and stops whole function.因此,当您不带任何条件地将
return
留在for
中时,return将在该循环的第一次迭代时停止整个函数(当fact
为1时)。这意味着,你的代码:
实际上,等于:
for
循环内return
运算符的有效条件示例: