Jules Manson Jules Manson - 26 days ago 7
Javascript Question

Simple Recursive Javascript Function Returns Undefined

For an assignment I am supposed to write a recursive function that checks any integer for even or odd using N-2. If even returns true else returns false. But it returns undefined whenever a value is large enough to call itself. Please help!

function isEven(num) {
console.log("top of function num = " + num);// For Debugging
if (num == 0){
return true;
}
else if (num == 1){
return false;
}
else {
num -= 2;
console.log("num = " + num);
isEven(num);
}
}
console.log(isEven(0));
// → true
console.log(isEven(1));
// → false
console.log(isEven(8));
// → ??


Console Log Results:

top of function num = 0

true

top of function num = 1

false

top of function num = 8

num = 6

top of function num = 6

num = 4

top of function num = 4

num = 2

top of function num = 2

num = 0

top of function num = 0

undefined

Answer

You have forgotten the return statement before the recursive isEven(num) call.

See the snippet below:

function isEven(num) {
  //console.log("top of function num = " + num);// For Debugging
  if (num == 0){
      return true;
  }
  else if (num == 1){
      return false;
  }
  else {
    num -= 2;
    return isEven(num);
  }
}
console.log('0 is even: ', isEven(0));
// → true
console.log('1 is even: ', isEven(1));
// → false
console.log('8 is even: ', isEven(8));