c语言实现二分搜索问题改写
时间: 2023-06-01 17:08:10 浏览: 58
为递归形式,你能帮我写一下吗?
当然可以。以下是C语言实现二分搜索问题的递归形式代码:
```c
#include <stdio.h>
int binarySearch(int arr[], int low, int high, int target) {
if (low <= high) {
int middle = (low + high) / 2;
if (arr[middle] == target) {
return middle;
} else if (arr[middle] > target) {
return binarySearch(arr, low, middle - 1, target);
} else {
return binarySearch(arr, middle + 1, high, target);
}
}
return -1;
}
```
这个函数接收一个数组(arr)和数组的上下界(low、high),以及要搜索的目标值(target)。首先,如果low大于high,说明搜索已经结束,没有找到目标值,返回-1。否则,计算出中间位置的索引middle。如果arr[middle]等于目标值target,说明找到了,返回middle。如果arr[middle]大于目标值target,说明目标值应该在middle的左边,递归搜索左半部分。如果arr[middle]小于目标值target,说明目标值应该在middle的右边,递归搜索右半部分。