所以我的递归函数太在列表中查找,看看某个项目是否已在列表中重复。前任。 L = [1,2,3,4,3] 返回 True。我已经完成了它,但我不允许使用“in”函数,但不知道解决方法。
编辑:我唯一可以使用的内置函数是len
、index
和splice运算符。
def has_repeats(L):
if L == []:
return False
elif L[0] in L[1:]:
return True
else:
return has_repeats(L[1:])
return False
最佳答案
您可以考虑使用递归以相反的顺序比较列表,使它们的索引相同,因为默认情况下 index
返回第一个匹配项,如下所示:
def has_repeats(L):
if len(L) <= 1:
return False
if L.index(L[-1]) != len(L) - 1:
return True
return has_repeats(L[:-1])
用法:
has_repeats([1, 2, 3, 4, 3])
True
has_repeats([1, 2, 3, 4, 0])
False
因此,基本上检查最后一项的索引 len(L) - 1
将与 L.index
相同,如果不这样做,则应返回第一个匹配项t 匹配,最后一项之前有重复项,并递归执行。
关于Python 递归 no 'in' 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29178905/