首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript递归练习:意外令牌

JavaScript递归练习:意外令牌
EN

Stack Overflow用户
提问于 2017-07-12 07:35:05
回答 2查看 52关注 0票数 1

我在其他线程上读到了这个错误,这些线程主要要求用户删除分号。这似乎对我的代码没有任何影响。

代码语言:javascript
复制
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";
}

这个行号*= -1似乎导致了错误,就好像我删除了它一样,代码运行时没有错误,只有在堆栈耗尽内存的负数情况下才运行。我想做的是让所有的数字都是正数。有谁愿意帮我吗?

溶液

代码语言:javascript
复制
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";
}
EN

回答 2

Stack Overflow用户

发布于 2017-07-12 07:40:08

{}不带花括号的问题

最好在每个if语句和else语句中添加{}(花括号)

代码语言:javascript
复制
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";
  }
}

console.log(isEven(-2))

票数 1
EN

Stack Overflow用户

发布于 2017-07-12 07:40:44

问题是,如果不使用大括号包装代码,则在第3行代码中执行2行代码。默认情况下,如果不用大括号包装块,则只执行一行。

代码语言:javascript
复制
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";
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45051240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档