2014-09-17 1 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

mid와 cube-mid의 차이점은 무엇입니까? – user3277752

+0

'cube-mid'의 목적이 무엇인지 알기 위해 그 라인을보세요. 그것이'n '과 어떻게 비교되고 있는지 주목해라. –