UNPKG

ds-algo-study

Version:

Just experimenting with publishing a package

51 lines (37 loc) 1.66 kB
// We want to write a function recursiveIsEven(num) which takes a number, // and returns true if num is even, false otherwise. // This problem must be solved recursively. // Repeating pattern // not recursive: num % 2 === 0 // mod(%) shows us remainders from division // repeated subtraction // Where does the pattern break or change // if num > 0, when num < 2 // if num < 0, num > -2 // Base Case // if (num >= 0 && num <= 2) if else (num <= 0 && num >= -2) // Recursive Case // if (num < -2 || num > 2) // Recrusive Step // if (num > 2) then recuresiveIsEven( num - 2) // if(num < 2) then recuresiveIsEven( num + 2) function recursiveIsEven ( num ) { if ( num < 0 ) { // if num is negative num = num * -1; } if ( num < 2 ) { // base case return num === 0; } return recursiveIsEven( num - 2 ) // recursive step } console.log( recursiveIsEven( -9 ) ); // recursiveIsEven(num); // 1st frame, num = -9 // recursiveIsEven(num); // 2nd frame, num = 7 // recursiveIsEven(num); // 3rd frame, num = 5 // recursiveIsEven(num); // 4th frame, num = 3 // recursiveIsEven(num); // 5th frame, num = 1, returns false, popped off the stack // 4th frame, return from 5th frame = false, returns false, popped off the stack // 3rd frame, return from 4th frame = false, returns false, popped off the stack // 2nd frame, return from 3rd frame = false, returns false, popped off the stack // 1st frame, return from 2nd frame = false, returns false, popped off the stack // Final return value: false