我在 Ruby 中研究這個遞回函式已經有一段時間了。有一個問題,我似乎無法自己解決。
def bsearch(array, target)
pos = (array.length - 1) / 2
return pos if array[pos] == target
if array[pos] < target
pos = bsearch(array[pos..-1], target)
else
pos -= bsearch(array[0..pos], target)
end
end
只要目標不是陣列中的第一個或最后一個元素,代碼似乎就可以作業。我找不到這個問題的解決方案。
uj5u.com熱心網友回復:
線
pos -= bsearch(array[0..pos], target)
實際上應該是
bsearch(array[0..pos], target)
如果您考慮一下,如果您的陣列長度為 200,并且您要查找的專案位于陣列前半部分的第 5 位,那么它也位于 wohle 陣列的第 5 位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/426751.html
上一篇:如何從獲取請求中檢索查詢引數
