二分法(算法中最简单的一种算法)
例:通过递归和二分法来查找值在不在列表中
nums=[11,13,21,31,43,101,221,302,339,443]
def binary_search(find_num,l):
if len(l) == 0:
print('not exists')
return
mid_index=len(l) // 2
if find_num > l[mid_index]:
binary_search(find_num,l[mid_index+1:])
elif find_num < l[mid_index]:
binary_search(find_num,l[:mid_index])
else:
print('find it')
binary_search(310,nums)
PS:二分法的逻辑,上来把一个列表的长度用整数除法进行整除,然后将传入的数字与整除后的数进行对比,如果小了查找的数肯定在右边(这时候利用列表切片再通过递归法传返回函数本身,往右切片的时候可以+1然后到最后,这样可以减少递归次数,当然也可以使加2,不限制,但是需要根据实际情况进行加数),如果大了肯定在左边