JavaScript递归练习:意外标记else
我在其他主要要求用户删除分号的线程上读到过这个错误。这似乎对我的代码没有影响JavaScript递归练习:意外标记else,javascript,syntax-error,Javascript,Syntax Error,我在其他主要要求用户删除分号的线程上读到过这个错误。这似乎对我的代码没有影响 function isEven(number){ if (number > 1) return isEven(number-2); else if (number == 1) return false; else if (number == 0) return true; else if (number < 0) number *= -1 return isEven(number); e
function isEven(number){
if (number > 1)
return isEven(number-2);
else if (number == 1)
return false;
else if (number == 0)
return true;
else if (number < 0)
number *= -1
return isEven(number);
else
return "Error";
}
函数isEven(数字){
如果(数字>1)
返回isEven(编号2);
else if(数字==1)
返回false;
else if(数字==0)
返回true;
否则如果(数字<0)
数字*=-1
返回isEven(编号);
其他的
返回“错误”;
}
这一行[number*=-1]似乎是导致错误的原因,就像我删除它一样。代码运行时没有错误,除了堆栈内存不足的负数。我想做的是让所有的数字都是正数。
有人愿意帮我吗
解决方案
function isEven(number){
if (number < 0){
number *= -1
return isEven(number);}
else if (number > 1){
return isEven(number-2);}
else if (number == 1){
return false;}
else if (number == 0){
return true;}
else
return "Error";
}
函数isEven(数字){
如果(数字<0){
数字*=-1
返回isEven(数字);}
否则,如果(编号>1){
返回isEven(数字2);}
else if(数字==1){
返回false;}
else if(数字==0){
返回true;}
其他的
返回“错误”;
}
简短回答:用{}
if (){
..
..
}else {
..
..
}
function isEven(number){
if (number > 1){
return isEven(number-2);
}
else if (number == 1){
return false;
}
else if (number == 0){
return true;
}
else if (number < 0){
number *= -1
return isEven(number);
}
else{
return "Error";
}
}
长答覆:
else if (number < 0)
number *= -1
return isEven(number);
注意:不仅要避免这个特定的错误,而且要避免许多其他奇怪的事情,总是尝试使用{}。这使每个人的生活都变得轻松。问题在于没有大括号
{}
最好在每个if和else语句中添加{}
(花括号)
函数isEven(数字){
如果(数字>1){
返回isEven(编号-2);
}else if(数字==1){
返回false;
}else if(数字==0){
返回true;
}否则如果(数字<0){
数字*=-1
返回isEven(编号);
}否则{
返回“错误”;
}
}
log(isEven(-2))
问题是,如果没有用大括号括起来,您试图在第三个else中执行两行代码。
默认情况下,如果不将块用大括号括起来,则只执行一行
function isEven(number){
if (number > 1){
return isEven(number-2);
}
else if (number == 1){
return false;
}
else if (number == 0){
return true;
}
else if (number < 0){
number *= -1;
return isEven(number);
}
else{
return "Error";
}
}
函数isEven(数字){
如果(数字>1){
返回isEven(编号2);
}
else if(数字==1){
返回false;
}
else if(数字==0){
返回true;
}
否则如果(数字<0){
数字*=-1;
返回isEven(编号);
}
否则{
返回“错误”;
}
}
您需要将代码放在if/else内{}
括号内。只有当正文是一行代码时,才可以省略它们。看:谢谢你,结果很好!非常感谢。如果其他人需要此信息,请在上面发布功能代码