我需要编写一个递归函数,该函数接收一个列表和一个目标元素,如果该元素在列表中,则返回True,否则返回False。
示例:
busca ([1,2,3], 2) -> returns True
busca ([], 49) -> returns False
我不能使用Python的"x in list"
命令。
我已经开发了代码,但是在某些情况下它返回None。对于其他人,它可以正常工作。
def busca(lista, alvo):
if len(lista) == 0:
return False
if alvo == lista[0]:
return True
if len(lista) == 1:
return False
else:
nova = lista[1:]
busca(nova, alvo)
# busca([3, 2, 1], 3)
答案 0 :(得分:0)
您的函数在以下情况下结束时返回None
:
else:
nova = lista[1:]
busca(nova, alvo) # even when this execution return True/False it's not returned by calling function
你是说吗?
else:
nova = lista[1:]
return busca(nova, alvo)
答案 1 :(得分:0)
我不明白为什么列表的长度等于1时为什么返回False?
2 in [2] => True
尽管
len([2]) => 1
和:
busca([2], 2) => True
这对我来说更有意义:
def busca(lst, tgt):
if len(lst) !=0:
if lst[0] == tgt:
return True
else:
return busca(lst[1:], tgt)
else:
return False
你能解释吗?