給定一個排序的數字列表,我需要查找大於給定數字的最小數字。考慮這個名單:查找排序列表中大於給定數字的最小數字
arr=[1,2,3,5,7,11,101,131,151,181,191,313,353,373,383]
說出指定的號碼是320。然後,我的方法應該返回353 353比320
我試圖用一個稍微修改較大的最小數量二進制搜索的形式;然而在執行時程序進入無限循環。
def modBinarySearch(arr,x):
l=len(arr)
mid=l/2
if arr[mid]>=x and arr[mid-1]<x:
return arr[mid]
elif arr[mid]>x and arr[mid-1]>x:
modBinarySearch(arr[mid:l],x)
else:
modBinarySearch(arr[0:mid],x)
N=int(raw_input())
arr=[1,2,3,5,7,11,101,131,151,181,191,313,353,373,383]
print modBinarySearch(arr,N)
有人能指出我在做什麼錯?
哦..是的。感謝您指出! – OneMoreError
您需要從遞歸調用中返回值,而不是僅僅丟棄該信息。沒有這些,代碼的其他部分的功能並不重要。另外,你使用'1'(wun),你應該使用'l'(ell)。 – paxdiablo