Я изучаю алгоритмы с Python и в настоящее время работаю над рекурсивным и итеративным двоичным поиском, я считаю, что код правильный.
Когда я запускаю программу с терминала, у меня нет вывода. Он должен возвращать True
дважды, один из итеративной функции , а другой из рекурсивной функции , но он не отображает никаких логических значений.
mbp-de-mathieu:programmation Mathieu$ cd python/
mbp-de-mathieu:python Mathieu$ python3.8 hello.py
coucou mathieu
mbp-de-mathieu:python Mathieu$ python3.8 binary_search.py
Однако я могу спуститься в консоль после вызова программы, используя ввод. Может кто-нибудь объяснить мне, что происходит? Я использую Ma c.
data = [2,4,5,7,8,9,12,14,17,19,22,25,27,28,33,37]
target = 25
def linear_search(data, target):
for i in range(len(data)):
if data[i] == target:
return True
return False
def binary_search_iterative(data, target):
low = 0
high = len(data) - 1
while low <= high:
mid = (low + high) // 2
if target == data[mid]:
return True
elif target < data[mid]:
high = mid - 1
else:
high = mid + 1
return False
def binary_search_recursive(data, target, low, high):
if low > high:
return False
else:
mid = (low + high) // 2
if target == data[mid]:
return True
elif target < data[mid]:
return binary_search_recursive(data, target, low, mid-1)
else:
return binary_search_recursive(data, target, mid+1, high)
print(binary_search_iterative(data, target))
print(binary_search_recursive(data, target, 0, len(data)-1))
Заранее спасибо
Желаю вам хороших выходных
С уважением
Mathieu