0

Hello I am a newbie learning Js I am trying to learn about recursion but I stuck in here

var isEven = (number) =>{
  number = Number(number)
  if(number === 0){
    console.log('it is even')
    return true;
  }
  else if(number === 1){
    return false;
  }
  else{
    number = number - 2;
    isEven(number);
  }
}

console.log(isEven(50) === true)

why the end result becomes undefined? Thank you for the help

1
  • 1
    return isEven(number); Commented Aug 2, 2018 at 3:30

2 Answers 2

1

Add return in recursion call:

function isEven(number){
  number = Number(number)
  if(number === 0){
    console.log('it is even');
    return true;
  }
  else if(number === 1){
    return false;
  }
  else{
    number = number - 2;
    return isEven(number);
  }
}

console.log(isEven(50));

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

Comments

0

You must use return in recursion call .If u do not use return the isEven(50) function will run but do not return isEven(48) so your function isEven(50) get undefined.So always use return. Example

function factorial( n ) {
  if ( n === 1 ) {
    return 1;
  }
  return n * factorial( n - 1 );
}

In above example you can when we call factorial(n-1); it will return (n-1)*factorial(n-2); but if u remove the return then result is undefined as factorial(n-1); do not return anything. Always remember in recursion focus is on returning function again and again till we get the result.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.