Форум сайта python.su
двоичный поиск. ТС ведь так просил?
насчет сравнения с 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 >>>
Отредактировано dimy44 (Дек. 11, 2012 21:59:58)
Офлайн
Спасибо всем за помощь. В связи с моими слабыми знаниями для меня понятнее всего оказался код предложенный 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)
Офлайн
dimy44Эээ, извини, я был с телефона и не увидел //2. Ты прав, еще раз сорри!
двоичный поиск. ТС ведь так просил?насчет сравнения с for. Поиск нуля
Офлайн