從遞回函式回傳值時遇到問題。例如,在一個名為“RBinSearch”的非常簡單的函式中,我試圖在陣列中查找鍵的索引。不幸的是,根據我的理解,我無法回傳值(答案應該是 4)。
為了進行比較,我使用了一個帶有回圈的普通函式來測驗回傳(在此處稱為“BinarySearch”的函式中),它按預期作業。任何人都可以解釋遞回函式中回傳的行為以及我的理解不正確的地方嗎?謝謝!
import math
import sys
def BinarySearch(array, key):
low=0
high=len(array)-1
while(low<=high):
mid=math.floor((low high)/2)
if(key==array[mid]):
return mid
elif(key<array[mid]):
high=mid-1
elif(key>array[mid]):
low=mid 1
return -1
def RBinSearch(array,low,high,key):
if(low<=high):
mid=math.floor((low high)/2)
print("Value of mid: ",mid)
if(key==array[mid]):
print("Found the value: ",mid)
return mid
sys.exit()
elif(key<array[mid]):
RBinSearch(array, low, mid-1, key)
else:
RBinSearch(array, mid 1, high, key)
return -1
arr=[4,8,10,15,18,21,24,27,29,33,34,37,39,41,43]
print("Index from while Bin search: ",BinarySearch(arr, 18))
print("The index found using the Binary search is: ",RBinSearch(arr, 0,len(arr)-1,18))
輸出

uj5u.com熱心網友回復:
您需要RBinSearch在RBinSearch函式中回傳結果:
def RBinSearch(array, low, high, key):
if low <= high:
mid = math.floor((low high) / 2)
print("Value of mid: ", mid)
if key == array[mid]:
print("Found the value: ", mid)
return mid
elif key < array[mid]:
return RBinSearch(array, low, mid - 1, key)
else:
return RBinSearch(array, mid 1, high, key)
return -1
你也不應該使用sys.exit().
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/379100.html
上一篇:如何知道陣列中偶數索引值的總和與奇數索引值的總和之間的差異(遞回代碼)
下一篇:沒有正確數字的遞回數字總和
