查找一个数组中的元素所在索引, 如果找到返回索引,没找到返回-1;例如数组为{1,2,-2,3,4,7} ,寻找元素为3,那么返回索引为3,请写出递归版本
时间: 2023-03-20 21:01:11 浏览: 113
以下是一个递归版本的查找函数:
```
int search(int arr[], int target, int start, int end) {
// 如果起始索引大于结束索引,则未找到目标元素,返回-1
if (start > end) {
return -1;
}
// 计算中间索引
int mid = start + (end - start) / 2;
// 如果中间元素等于目标元素,则返回中间索引
if (arr[mid] == target) {
return mid;
}
// 如果中间元素大于目标元素,则在左半部分继续查找
if (arr[mid] > target) {
return search(arr, target, start, mid - 1);
}
// 如果中间元素小于目标元素,则在右半部分继续查找
return search(arr, target, mid + 1, end);
}
// 调用 search 函数查找目标元素 target
int index = search(arr, target, 0, len - 1);
```
调用该函数时,需要传递以下参数:
- `arr`:要查找的数组;
- `target`:要查找的目标元素;
- `start`:要查找的子数组的起始索引;
- `end`:要查找的子数组的结束索引。
初始调用时,`start` 应该是数组的起始索引(通常是0),`end` 应该是数组的结束索引(通常是 `len - 1`,其中 `len` 是数组的长度)。函数返回目标元素的索引,如果目标元素不存在于数组中,则返回 -1。
阅读全文