Учебники

Python — рекурсия

Рекурсия позволяет функции вызывать себя. Фиксированные шаги кода выполняются снова и снова для новых значений. Мы также должны установить критерии для решения, когда закончится рекурсивный вызов. В приведенном ниже примере мы видим рекурсивный подход к бинарному поиску. Мы берем отсортированный список и передаем его индексный диапазон в качестве входных данных для рекурсивной функции.

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

Мы реализуем алгоритм бинарного поиска с использованием Python, как показано ниже. Мы используем упорядоченный список элементов и разрабатываем рекурсивную функцию для приема в список alogn с начальным и конечным индексом в качестве входных данных. Затем функция бинарного поиска вызывает себя, пока не найдет искомый элемент или не решит, что его нет в списке.

def bsearch(list, idx0, idxn, val):

    if (idxn < idx0):
        return None
    else:
        midval = idx0 + ((idxn - idx0) // 2)
# Compare the search item with middle most value

        if list[midval] > val:
            return bsearch(list, idx0, midval-1,val)
        elif list[midval] < val:
            return bsearch(list, midval+1, idxn, val)
        else:
            return midval

list = [8,11,24,56,88,131]
print(bsearch(list, 0, 5, 24))
print(bsearch(list, 0, 5, 51))

Когда приведенный выше код выполняется, он дает следующий результат —