使用递归完成用java写一个二分查找示例代码
时间: 2023-06-16 16:07:11 浏览: 107
Java实现二分查找的递归和非递归算法
下面是用 Java 实现的递归二分查找示例代码:
```java
public class BinarySearch {
public static int binarySearch(int[] arr, int left, int right, int target) {
// 如果左边界大于右边界,则表明查找失败
if (left > right) {
return -1;
}
// 计算中间位置
int mid = left + (right - left) / 2;
// 如果中间值等于目标值,则返回中间位置
if (arr[mid] == target) {
return mid;
}
// 如果中间值大于目标值,则在左半部分继续查找
else if (arr[mid] > target) {
return binarySearch(arr, left, mid - 1, target);
}
// 如果中间值小于目标值,则在右半部分继续查找
else {
return binarySearch(arr, mid + 1, right, target);
}
}
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(arr, 0, arr.length - 1, target);
if (result != -1) {
System.out.println("目标值" + target + "在数组中的下标为:" + result);
}
else {
System.out.println("目标值" + target + "在数组中不存在!");
}
}
}
```
在调用 `binarySearch` 方法时,需要传入数组、左边界、右边界和目标值四个参数,其中左边界为数组的首位下标,右边界为数组的末位下标,初始时为 `0` 和 `arr.length - 1`。在方法内部,首先判断左边界是否大于右边界,如果是则返回 `-1` 表示查找失败;否则计算出中间位置 `mid`,并判断中间值是否等于目标值,如果是则返回中间位置;如果中间值大于目标值,则在左半部分递归调用 `binarySearch` 方法查找目标值;如果中间值小于目标值,则在右半部分递归调用 `binarySearch` 方法查找目标值。
阅读全文