我对递归还很陌生,我必须为我的家庭作业解决一个问题,该问题要求定义一个递归函数来获取列表中给定项上的下一个元素。我制作了迭代版本,但我不知道如何编写递归版本。
def next_value(lst,v):
ind = lst.index(v)
list1_result = lst[ind+1]
return list1_result
a = [4, 2, 10, 3, 2, 5]
print(next_value(a,10))
# output: 3
您的解决方案看起来不错,但如果它必须是递归的,下面是一个示例实现:
def next_value(lst, v):
if (len(lst) < 2):
return None
if (lst[0] == v):
return lst[1]
return next_value(lst[1:], v)
基本上,我们传递来自相同list
的切片,直到找到具有给定值的元素。如果长度小于2,则该列表要么为空,要么我们已经查看了所有内容。在这种情况下,我们返回None
来表示没有有效的答案。