2014-09-17 2 views
1

Предположим, мы хотим найти корень куба значения, используя двоичный поиск. Мы хотим сделать ряд догадок с помощью алгоритма бинарного поиска, чтобы наши предположения становились все более точными, пока они не достигли достаточно близкого порога. Я не знаю, с чего начать, но с этой проблемой.Корзины двоичного поиска и куба

(define (cube-root n) 
    (define lo 0) 
    (define hi 0) 
    (define mid (/ n 2) 
    ;Execute algorithm for more precise guess 
+0

То, что кажется проблемой? Пока вы знаете, как выбрать 'lo' и' hi' для заданного числа, остальные тривиальны и могут быть реализованы итеративно или рекурсивно. Вам также необходимо решить критерии для * достаточно хорошо * решения (то есть точности). –

ответ

0

Вот моя реализация, с некоторыми битами заменены <???>, так что вы можете заполнить их в себе:

(define (cube-root n) 
    (define (helper lo hi) 
    (define mid <???>) 
    (define cube-mid <???>) 
    (cond ((< (abs (- cube-mid n)) <???>) mid) 
      (<???> (helper lo mid)) 
      (else (helper mid hi)))) 
    (if (negative? n) 
     (helper <???> <???>) 
     (helper <???> <???>))) 
+0

В чем разница между серединой и кубом? – user3277752

+0

Посмотрите на строку после этого, чтобы узнать, что означает 'cube-mid'. Обратите внимание, как его сравнивают с 'n'? –

Смежные вопросы