编写函数fun(ls,target,low,high), 递归实现二分法查找。对有序列表ls=[7,9,1
时间: 2023-10-30 13:02:56 浏览: 102
二分法查找是一种高效的查找算法,可以通过将有序列表分成两部分,并比较目标值与列表中间元素的大小关系来确定目标值在前半部分还是后半部分。根据题目给出的函数fun(ls, target, low, high),可以通过递归实现二分法查找。
首先,我们需要定义函数fun(ls, target, low, high),其中ls是有序列表,target是要查找的目标值,low和high分别是列表的起始索引和结束索引。
然后,在函数内部,我们可以首先判断low是否小于等于high,如果不满足,则表示查找没有结果,返回-1。
接下来,我们可以找到列表的中间位置mid,可以通过计算得到:
mid = (low + high) // 2
然后,我们可以判断目标值与中间元素的大小关系。如果目标值等于中间元素,那么说明找到了目标值,直接返回mid。
如果目标值小于中间元素,说明目标值在前半部分,可以通过递归调用函数fun(ls, target, low, mid-1)来在前半部分继续查找。
如果目标值大于中间元素,说明目标值在后半部分,可以通过递归调用函数fun(ls, target, mid+1, high)来在后半部分继续查找。
最后,如果以上条件都不满足,表示在整个列表中没有找到目标值,函数返回-1。
综上所述,可以得到如下代码实现:
def fun(ls, target, low, high):
if low > high:
return -1
mid = (low + high) // 2
if target == ls[mid]:
return mid
elif target < ls[mid]:
return fun(ls, target, low, mid-1)
else:
return fun(ls, target, mid+1, high)
阅读全文