1

I have read about this error on other threads that mostly ask the user to remove semicolons. This seems to have no effect on my code.

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";
}

It seems that this line [number *= -1] is causing the error as if I remove it the code runs with no error except for negative numbers where the stack runs out of memory. What I'm trying to do is to make all numbers positive. Anyone that would like to help me out?

Solution

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";
}
2
  • 1
    You need to put the code inside if/else inside {} brackets. You can omit them only if the body is a single line of code. See: w3schools.com/js/js_if_else.asp Commented Jul 12, 2017 at 7:37
  • Thank you, that worked out just fine! Commented Jul 12, 2017 at 7:41

3 Answers 3

1

Short answer: Wrap your codes with {}

if (){
 ..
 ..
}else {
 ..
 ..
}

Long answer :

else if (number < 0)
  number *= -1
  return isEven(number);

You are not using {} hence the very next line of the condition only considered as a statement belong to the else if and the later will be treated as general statements.

Since you have 2 lines of code in else if, the link broken there and your else became an orphan. That is the reason you seeing the error. Please wrap up your conditions in {}

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";
}
}

Note: Not only to avoid this specific error but to avoid many other weird things always try to use {}. That makes everyones life easy.

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you! Functional code posted above if anyone else want this information
1

Problem is without curly brackets {}

Better you could add {}(curly brackets) on each if and else statement

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))

Comments

1

The problem is that you are trying to execute 2 lines of code in the 3rd else if without wrapping it up in curly braces. By default only single line gets executed when you don't wrap up the block in curly braces.

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";
  }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.