二分法,递归

def search(n, l):
    print(l)
    if len(l) == 0:
        print("bucunzai")
        return
    mid_index = len(l) // 2

    if n > l[mid_index]:
        l = l[mid_index + 1:]
        return search(n, l)            #这个return是返回函数的  发起者
    elif n < l[mid_index]:
        l = l[:mid_index]
        return search(n, l)            #这个return  是返回个函数的  发起者

    else:
        return l[mid_index]        #这个return 是给上面的某一个的   最后的结果个发起者

l = [1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000]
ret = search(33, l)
print(ret,l.index(ret))


[1, 2, 10, 30, 33, 99, 101, 200, 301, 311, 402, 403, 500, 900, 1000]
[1, 2, 10, 30, 33, 99, 101]
[33, 99, 101]
[33]
33 4

猜你喜欢

转载自www.cnblogs.com/wuxi9864/p/9899478.html