c语言递归函数实现二分查找

代码如下

#include //二分查找

int func(int arr[], int l, int r, int num) {
    int mid = (r + l) / 2;
    if (l > r) {
        return 0;
    } else if (num > arr[mid] ) {
        return func(arr, mid + 1, r, num);
    } else if (num < arr[mid]) {
        return func(arr, l, mid - 1, num);
    } else {
        return mid;
    }

}

int main() {
    int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    int k = 0;
    scanf("%d", &k);//输入查找数
    int l = 0;
    int r = sizeof(arr) / sizeof(arr[0]) - 1;
    while (l <= r) {
        int mid = (l + r) / 2;
        if (k > arr[mid]) {
            l = mid + 1;
        } else if (k < arr[mid]) {
            r = mid - 1;
        } else {
            printf("找到了\n");
            break;
        }
    }
    if (l > r) {
        printf("没找到\n");
    }
    return 0;
}

个人理解,仅供参考

你可能感兴趣的:(大数据)