found a bug in Absolute Beginner’s Guide to Algorithms

I found a bug in your code in your book. The following code:

// Recursive Approach
function binarySearch(arr, val, start = 0, end = arr. {
  const middleIndex = Math.floor((start + end) / 2);
  if (val === arr[middleIndex]) {
    return middleIndex;
  }
  if (start >= end) {
    return -1;
  }
  if (val < arr[middleIndex]) {
    binarySearch(arr, val, start, middleIndex - 1);
  } else {
    binarySearch(arr, val, middleIndex + 1, end);
  }
}

Should be corrected to:

// Recursive Approach
function binarySearch(arr, val, start = 0, end = arr. {
  const middleIndex = Math.floor((start + end) / 2);
  if (val === arr[middleIndex]) {
    return middleIndex;
  }
  if (start >= end) {
    return -1;
  }
  if (val < arr[middleIndex]) {
    return binarySearch(arr, val, start, middleIndex - 1);
  } else {
    return binarySearch(arr, val, middleIndex + 1, end);
  }
}

Make sure to include the return statement in the recursive calls to binarySearch to fix the issue.

Wow! You are absolutely right. Thanks for flagging this. I’ve documented it in the errata thread and have also flagged it for correction in future printings.