我正在用 Python 撰寫遞回二進制搜索函式。我的代碼看起來像函式接受的常見示例:
(a) 號碼清單;(b) 搜索詞;(c) 右指標初始位置的串列長度;(d) 左指標的默認引數為 0。
我是否必須同時傳遞數字串列(a)和串列的長度(c)?我不能創建一個自動計算引數 (a) 長度的默認引數嗎?
MWE:
def binarySearchRecur(nums, target, high, low=0):
if high - low == 1:
return "not found"
elif nums[(high low) // 2] < target:
low = (high low) // 2
return binarySearchRecur(nums, target, low, high)
elif nums[(high low) // 2] > target:
high = (high low) // 2 1
return binarySearchRecur(nums, target, low, high)
return f"index at: {(low high) // 2}"
target = 16
nums = [x for x in range(20)]
print(binarySearchRecur(nums, target, len(nums)-1))
在上面的代碼中,我想在第一次呼叫函式時只使用numsand target。
uj5u.com熱心網友回復:
你能簡單地做這樣的事情嗎?
def binarySearchRecur(nums, target, high=None, low=0):
if high is None:
high=len(nums)
...
這樣,如果您只輸入串列和目標,該函式首先會從串列中推斷“高”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/425214.html
上一篇:Python:在嵌套字典中查找值的遞回函式不斷回傳“無”
下一篇:二叉搜索樹字符實作C
