Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 11, 2012 21:41:02

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Нужна помощь с циклом

двоичный поиск. ТС ведь так просил?
насчет сравнения с for. Поиск нуля

max_num = 100
min_num = 0
x = 0
step = 0
while 1:
    v = (max_num + min_num) // 2
    if v > x:
        max_num = v - 1
    elif v < x:
        min_num = v + 1
    elif v == x:
        print step
        break
    step += 1
>>>
5
>>>
5 шагов.

Отредактировано dimy44 (Дек. 11, 2012 21:59:58)

Офлайн

#2 Дек. 12, 2012 01:11:47

Hando84
Зарегистрирован: 2012-12-11
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь с циклом

Спасибо всем за помощь. В связи с моими слабыми знаниями для меня понятнее всего оказался код предложенный sergeekом. Единственное только надо изменить верхний и нижний предел вместо 100 и 0 на 101 и 1, иначе комп может дойти до нуля а это не входит в наш диапазон а также не достигнет числа 100 которое тоже может быть загадано. Но это так частности. Главное что я понял сам принцип и это максимально близко к тому что я пытался написать на псевдокоде. Единственное, что мне не очень нравиться, это то что приходиться идти на хитрости по максимальному и минимальному пределу. тоесть составлять некую формулу со сложением

lim_h = value
value = (lim_l + value) // 2
Неужели нельзя никак указать в цикле что-нибудь типо условия
if value > 100 and value < 1
break

Отредактировано Hando84 (Дек. 12, 2012 01:18:50)

Офлайн

#3 Дек. 12, 2012 04:47:04

dugar
От:
Зарегистрирован: 2010-05-23
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Нужна помощь с циклом

dimy44
двоичный поиск. ТС ведь так просил?насчет сравнения с for. Поиск нуля
Эээ, извини, я был с телефона и не увидел //2. Ты прав, еще раз сорри!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version