2 回答

TA貢獻1770條經驗 獲得超3個贊
i 被打印為 1,因為每次調用時,i 在 binary_search 函數中都被設置為 0。嘗試將 i 的初始化移到函數之外。
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 的范圍以使其成為全局變量。

TA貢獻1809條經驗 獲得超8個贊
使i作為全局變量并分配有價值的調用全局關鍵字
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")
添加回答
舉報