python中的练习返回无

时间:2019-04-14 18:00:57

标签: python-3.x

我需要编写一个递归函数,该函数接收一个列表和一个目标元素,如果该元素在列表中,则返回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)

2 个答案:

答案 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

你能解释吗?