天天看點

二分法,遞歸

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