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

2 Answers2

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));
NullPointer
  • 7,094
  • 5
  • 27
  • 41
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.

Devanshu
  • 883
  • 10
  • 22