第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 python 中的二分搜索代碼中的計數(shù)器沒有增加?

為什么 python 中的二分搜索代碼中的計數(shù)器沒有增加?

小怪獸愛吃肉 2023-10-06 10:53:12
def binary_search(array,key,left,right):    if left>right:        return -1    mid=(right+left)//2    if key==array[mid]:        return mid    i=0    if key<array[mid]:        i+=1        print("subarray at step {} : {}".format(i,array[left:mid]))        return binary_search(array,key,left,mid-1)    elif key>array[mid]:        i+=1        print("subarray at step {} : {}".format(i,array[mid:right]))        return binary_search(array,key,mid+1,right)array=[1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,222,333]res= binary_search(array,88,0,len(array))print(res if res!=-1 else "Not found")在這個二分搜索代碼中,我無法弄清楚為什么計數(shù)器不工作。每次打印i 1。計數(shù)器不會增加。我究竟做錯了什么?謝謝。
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經(jīng)驗 獲得超3個贊

i 被打印為 1,因為每次調(diào)用時,i 在 binary_search 函數(shù)中都被設(shè)置為 0。嘗試將 i 的初始化移到函數(shù)之外。



def binary_search(array,key,left,right):

    global i

    if left>right:

        return -1

    mid=(right+left)//2


    if key==array[mid]:

        return mid

    # i=0

    if key<array[mid]:

        i+=1

        print("subarray at step {} : {}".format(i,array[left:mid]))

        return binary_search(array,key,left,mid-1)


    elif key>array[mid]:

        i+=1

        print("subarray at step {} : {}".format(i,array[mid:right]))

        return binary_search(array,key,mid+1,right)



i =0

array=[1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,222,333]

res= binary_search(array,88,0,len(array))

您需要更改變量 i 的范圍以使其成為全局變量。


查看完整回答
反對 回復(fù) 2023-10-06
?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

使i作為全局變量并分配有價值的調(diào)用全局關(guān)鍵字


i = 0

def binary_search(array,key,left,right):

    if left>right:

        return -1

    mid=(right+left)//2

    # i=0


    if key==array[mid]:

        return f'it found position {mid}'

    

    if key<array[mid]:

        global i 

        i = i+1

        print("subarray at step {} : {}".format(i,array[left:mid]))

        return binary_search(array,key,left,mid-1)


    elif key>array[mid]:

        i+=1

        print("subarray at step {} : {}".format(i,array[mid:right]))

        return binary_search(array,key,mid+1,right)




array=[1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77,88,99,222,333]

res= binary_search(array,88,0,len(array))

print(len(array))


print(res if res!=-1 else "Not found")


查看完整回答
反對 回復(fù) 2023-10-06
  • 2 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號