c语言实现二分查找,用递归实现
时间: 2023-07-27 22:13:22 浏览: 67
以下是 C 语言实现二分查找的递归版本代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int l, int r, int x) {
if (r >= l) {
int mid = l + (r - l) / 2;
if (arr[mid] == x)
return mid;
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);
return binarySearch(arr, mid + 1, r, x);
}
return -1;
}
int main() {
int arr[] = {2, 3, 4, 10, 40};
int n = sizeof(arr) / sizeof(arr[0]);
int x = 10;
int result = binarySearch(arr, 0, n - 1, x);
(result == -1) ? printf("Element is not present in array")
: printf("Element is present at index %d", result);
return 0;
}
```
在递归函数中,我们首先检查基础情况,即如果 r>=l,则仍然有元素需要搜索。然后我们找到数组的中间项,并将其与要查找的元素进行比较。如果中间元素大于要查找的元素,则我们需要在左侧继续搜索,否则我们需要在右侧继续搜索。递归调用二分查找函数,直到我们找到了所需的元素或数组中没有剩余的元素。如果没有找到元素,则返回 -1。