以下为ChatGPT自动生成的解答,正确与否请自行判断。

BFE.devAI解答 - JavaScript 代码题
10. 找出第一个不良版本

解答:

这是一个典型的二分查找题目,可以运用二分查找的思路进行解答。

我们假设最后一个版本是n,二分查找需要确定一个左右边界,初始的左边界是1,右边界是n。每次二分查找会将中间的版本mid传入isBad函数中,如果返回值是true,说明有bug,我们需要继续在左侧寻找;否则说明没有bug,我们需要继续在右侧寻找。这样循环进行,直到左右边界相等,返回左边界即可。

如果遍历完整个程序还没有找到坏掉的版本,则返回-1。

参考代码:

function firstBadVersion(n) {
  let left = 1;
  let right = n;
  while (left < right) {
    const mid = Math.floor((left + right) / 2);
    if (isBadVersion(mid)) {
      right = mid; // 还在左侧寻找
    } else {
      left = mid + 1; // 在右侧寻找
    }
  }
  return isBadVersion(left) ? left : -1;
}