я пытаюсь сделать линейный поиск с использованием рекурсии в python? - PullRequest
0 голосов
/ 27 марта 2020

мой код линейного поиска с использованием рекурсии

рекурсия не останавливается при обнаружении целевого элемента

def checkNumber(arr, x):
    l  = len(arr)
    if(arr[0]==x):
        return True
    else:
        return
    smallerarr = arr[1:]
    is_xpresent = checkNumber(smallerarr,x)

    return is_xpresent

1 Ответ

1 голос
/ 27 марта 2020

Вам нужно сделать рекурсивный вызов в вашем блоке else, иначе вы выходите из функции слишком рано. Вам также необходимо условие отказа / прерывания, это когда arr является пустым списком, либо потому что весь список был найден, либо пустой список пропущен, в этом случае возвращаем False

def checkNumber(arr, x):
    if not arr:  # Simple/failure case where arr is an empty list
        return False
    elif arr[0] == x:
        return True
    else:
        return checkNumber(arr[1:], x)
...