我正在尝试在Chrome的JS控制台中获取阶乘号。
显然,我对for循环的理解有些问题,我想知道其中的哪一部分对我来说不合逻辑。
非常感谢您的回答<3
var newX
function factorial(x) {
if(x > 0){
for(i = 1;i <= x;i++){
var newX = x * i ;
} return newX;
};
};
答案 0 :(得分:1)
在您所说的var newX = x * i;
处声明了一个新变量。删除var
。
x * i
将返回x
的平方,因为最后i
是x。
var newX = 1;
function factorial(x) {
if(x > 0){
for(var i = 1;i <= x;i++){
newX = newX * i;
}
return newX;
} else {
return 1;
}
};
console.log(factorial(5));
答案 1 :(得分:0)
您必须在for循环中删除var
。另外,您应该在函数内移动newX
的声明。还有其他一些错误。
function factorial(x) {
var newX = 1
if(x > 0){
for(i = 1;i <= x;i++){
newX = newX * i ;
}
return newX;
}
}
为了完整起见,当x为0时,您应该返回1;而当x为负数或非整数时,您应该返回NaN。
您可以将其重写为递归函数:
function factorial(x) {
if(x == 0) return 1;
return x*factorial(x-1);
}
看起来更干净。
答案 2 :(得分:0)
在循环中写入var newX意味着每次循环执行前都要创建新变量,另一件事是您要乘以x * i,但是它必须是newX * = i才能满足阶乘条件(即每次必须乘以结果加上下一个数字)。
var newX=1;
function factorial(x) { if(x > 0){
for(i = 1;i <= x;i++){ newX *= i ;
} return newX; }; };