这是我的python代码
def search(myList, number):
for i in myList:
if i[0] == number:
return i[1]
return None
myList = [(5107261, 'Ernst'), (6524256, 'Arvo')]
number = 5107261
print(search(myList, number))
现在我想用递归来编写它,但我不知道该怎么做。我需要一些指导来帮助我开始。
答案 0 :(得分:3)
编写递归代码时,您需要定义基本案例,并且要定义一种方法,以便在每一步都使问题变小。在这个例子中,我们正在使用列表,所以一个好的基本情况是一个空列表,[]。如果列表为空,则返回None是有意义的。在递归的情况下,您希望做一些工作来缩小问题。在这种情况下,我们可以检查一个元素,如果该元素不是我们要搜索的元素,我们可以在较小版本的列表上再次调用该函数。
我们的结果是这样的函数:
def searchR(myList, number):
if length(myList) == 0: return None
elif myList[0][0] == number: return myList[0][1]
else: return searchR(myList[1:], number)
有3例。案例1是我们的基本案例,其中列表的长度为0.案例2是我们的成功案例,我们找到了搜索的目标。案例3是我们进行递归调用的地方。注意第一个元素是如何从新列表中删除的!如果第一个元素没有被删除,该函数将永远循环。