1. /*
    2. 折半查找的递归实现
    3. */
    4. #include <stdio.h>
    5. #include<stdlib.h>
    6. int halfSearch(int *arr, int num, int low, int mid, int high) {
    7. if (low > high)return -1;
    8. if (num == arr[mid]) {//找到,返回位置
    9. return mid;
    10. }
    11. else if (num > arr[mid]) {
    12. return halfSearch(arr, num, mid + 1, (mid + 1 + high) / 2, high);
    13. }
    14. else {
    15. return halfSearch(arr, num, low, (low + mid - 1) / 2, mid - 1);
    16. }
    17. }
    18. int main() {
    19. int arr[] = { 0,1,3, 5,9,12,24,25,35,44,54,55 };
    20. printf("%d ", halfSearch(arr, 100, 1, 6, 11));
    21. return 0;
    22. }