js递归实现二分查找
时间: 2023-10-08 09:06:57 浏览: 137
二分查找是一种高效的查找算法,可以在有序数组中快速定位指定元素。下面是使用递归实现的二分查找的 JavaScript 代码:
```javascript
function binarySearch(arr, target, left = 0, right = arr.length - 1) {
if (left > right) {
return -1; // 找不到目标元素
}
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid; // 找到目标元素,返回索引
} else if (arr[mid] > target) {
return binarySearch(arr, target, left, mid - 1); // 目标元素在左侧,继续在左侧部分查找
} else {
return binarySearch(arr, target, mid + 1, right); // 目标元素在右侧,继续在右侧部分查找
}
}
// 示例用法
const nums = [1, 3, 5, 7, 9];
const target = 5;
const result = binarySearch(nums, target);
console.log(result); // 输出: 2
```
以上代码定义了一个 `binarySearch` 函数,它接受一个有序数组 `arr`、要查找的目标元素 `target`,以及可选的左右边界参数 `left` 和 `right`。函数内部使用递归来不断将搜索范围缩小,直到找到目标元素或者无法继续缩小范围(即找不到目标元素)。如果找到目标元素,返回其索引;否则,返回 -1 表示找不到。在示例用法中,我们使用给定的有序数组和目标元素调用函数,并输出结果。
阅读全文