【发布时间】:2021-05-07 07:44:26
【问题描述】:
我正在尝试/需要编写一个递归函数,如果元素在排序列表中,则返回 True/False 值。我必须不使用“in”关键字来获得答案。我的代码在下面,我想我很接近,但我似乎无法让函数返回正确的值:
def listSplitter(listToProcess, numToFind):
lenOfList = len(listToProcess)
if lenOfList == 1:
if numToFind == listToProcess[0]:
return True
else:
return False
else:
if lenOfList % 2 == 0:
list1 = listToProcess[0:int(lenOfList / 2)]
list2 = listToProcess[int(lenOfList / 2):int(lenOfList)]
if list1[-1] >= numToFind and list1[0] <= numToFind:
return (list1, numToFind)
#return
elif list2[-1] >= numToFind and list2[0] <= numToFind:
return listSplitter(list2, numToFind)
#return
else:
list1 = listToProcess[0:int(lenOfList / 2)]
list2 = listToProcess[int(lenOfList / 2):int(lenOfList)]
if list1[-1] >= numToFind and list1[0] <= numToFind:
return listSplitter(list1, numToFind)
#return
elif list2[-1] <= numToFind and list1[0] >= numToFind:
return listSplitter(list2, numToFind)
#return
def ordered_contains(S, x):
return listSplitter(S,x)
#result = listSplitter(S, x)
#return result
A = [2, 16, 26, 32, 52, 71, 80, 88]
print("A contains 32: {}".format(ordered_contains(A, 32)))
print("A contains 7: {}".format(ordered_contains(A, 7)))
print("A contains -10: {}".format(ordered_contains(A, -10)))
print("\n(Did those results match the earlier example?)")
这是输出:
A contains 32: ([2, 16, 26, 32], 32)
A contains 7: ([2, 16, 26, 32], 7)
A contains -10: None
(Did those results match the earlier example?)
我错过了什么?
任何帮助将不胜感激。
谢谢
【问题讨论】:
-
只需使用while循环遍历列表的每个条目
-
我必须使用递归,这是一个作业。
-
您似乎错过了这一行中的函数调用:
return (list1, numToFind)