因此,我正在編寫一個遞歸函數來確定二進制搜索算法列表中的整數的成員資格,並且一旦函數完成遞歸,我無法返回/打印值。說實話,我很難在遞歸的時候回想起來。每當我運行程序時,它都會無限地輸出一半的錯誤信息。我的問題似乎是,如果項目失敗遞歸測試,它不知道何時停止失敗,它只是不斷打印失敗的條件/錯誤消息。遞歸函數返回值的難度
程序一旦完成運行就打印出條件是必須的,所以如果我說is_member(list_of_numbers,83),它將在列表中打印「真」。
這是我工作了幾個小時後的代碼。
def is_member(set, number):
if len(set) == 0:
print(False)
else:
midpoint = len(set) // 2
#print(midpoint)
if set[midpoint] == number:
print(True)
else:
if number < set[midpoint]:
if is_member(set[:midpoint], number) == True:
print(True)
elif number > set[midpoint]:
if is_member(set[:midpoint+1:], number) == True:
print(True)
else:
print(False)
testlist = [0, 1, 2, 8, 13, 17, 19, 32, 42,]
is_member(testlist, 3)
is_member(testlist, 19)
你從你的函數返回任何你可能會遇到困難,因爲在任何時候返回值。 – juanchopanza
+當set的長度變爲0時,'if'條件無限運行。設置的長度如果從不<0,則始終執行print語句。 –