我在查看在線wiki時創建了二進制搜索。我有一類Athletes,每個類都有一個名稱和編號。我輸入一個文件文本或csv,並不重要 - 每個運動員的姓名和號碼。我的程序首先對它們進行排序,然後我嘗試添加基於用戶輸入搜索數字的功能,並顯示誰穿着該編號的球衣。所以我最初的帖子是試圖對具有相同編號的人進行二分查找。如果我的名單上有邁克爾喬丹和勒布朗詹姆斯,他們都會穿23號 - 所以當我的搜索過程中只輸出1(以先到者爲準)。我一直在尋找如何讓我的搜索(下面)接受/查找多次出現的數字。但是,經過進一步測試,我發現如果我輸入的數字實際上並不在我的列表中,它會給我錯誤:search: stack level too deep
,我不知道這意味着什麼。我認爲我的搜索不能正確處理,如果沒有實例的數字,或者如果數組爲0 所以我在尋找一些幫助,看看如何解決這個工作,如果用戶輸入的數字不是' t在列表中。所以如果有人輸入「1000」 - 沒有人穿過該球衣號碼,並且應該返回錯誤。或者類似的東西,打破,不管。未找到數字時發現二進制搜索錯誤
def search(array, num, start = 0, last = nil)
if last == nil
last = array.count - 1
end
mid = (start + last)/2
if num < array[mid].number
return search(array, num, start, mid - 1)
elsif num > array[mid].number
return search(array, num, mid + 1, last)
else
return mid
end
end
現在我也得到了==: stack level too deep
上線,其中if last == nil
看起來你一直在編輯這個問題,但現在它沒有什麼意義。你應該告訴我們你想要做什麼,並提供一個[mcve]並解釋你目前的嘗試是什麼問題,並提出一個明確的問題。 –