第23611题 单选
关于给定C++递归二分查找函数的描述,不正确的是?

给定一个长度为n的有序数组nums,其中所有元素都是唯一的。如下函数返回数组中元素target的索引:

int binarySearch(vector<int> &nums, int target, int left, int right) {
    if (left > right) {
        return -1;
    }

    int middle = left + ((right - left) / 2);
    if (nums[middle] == target) {
        return middle;
    }
    else if (nums[middle] < target) {
        return binarySearch(nums, target, middle + 1, right);
    }
    else
        return binarySearch(nums, target, left, middle - 1);
}

int Find(vector<int> &nums, int target) {
    int n = nums.size();
    return binarySearch(nums, target, 0, n - 1);
}
A

函数采用二分查找,每次计算当前搜索区间的中点,然后根据中点的元素值排除一半搜索区间。

B

函数采用递归求解,每次问题的规模减小一半。

C

递归的终止条件是中间元素的值等于target ,若数组中不包含该元素,递归不会终止。

D

算法的复杂度为O(logn)。