#编写一个递归的Python函数来实现二分查找。如果在有序列表中查找到了指定值,返回该值在列表中的索引位置,否则返回-1
方法一:
n =int( input("请输入要查找的数:"))
list1 = [1,2,3,12,13,15,16]
list2 = list1.copy()
def a(*list1):
if n not in list2:
return -1
else:
if n == list1[len(list1)//2]:
return list2.index(n)
elif n<list1[len(list1)//2]:
return a(*list1[0:len(list1)//2])
elif n>list1[len(list1)//2]:
return a(*list1[len(list1)//2:len(list1)])
print(a(*list1))
方法二:
def findindex(findlist,findnumber,start=0,end=None):
if end==None:
end = len(findlist)-1
if start<end:
mid = (end - start) // 2 + start
if findlist[mid] > findnumber:
ret = findindex(findlist, findnumber, start, mid - 1)
return ret
elif findlist[mid] < findnumber:
ret = findindex(findlist, findnumber, mid + 1, end)
return ret
else:
return findnumber, mid
else:
print('找不到这个值')
findlist = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
print(findindex(findlist, 5))