遞歸實現二分法查找的思路如下:
下面是一個用遞歸實現二分法查找的示例代碼:
#include <stdio.h>
int binarySearch(int arr[], int target, int start, int end) {
if (start > end) {
return -1;
}
int mid = (start + end) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] > target) {
return binarySearch(arr, target, start, mid - 1);
} else {
return binarySearch(arr, target, mid + 1, end);
}
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(arr, target, 0, sizeof(arr) / sizeof(arr[0]) - 1);
if (result == -1) {
printf("Element not found\n");
} else {
printf("Element found at index %d\n", result);
}
return 0;
}
以上代碼中,我們定義了binarySearch
函數來實現二分法查找,然后在main
函數中調用該函數進行查找。輸出結果為Element found at index 2
,表示在給定數組中找到了待查找的元素,并返回其索引位置為2。