0

칸 아카데미에서 퀴즈를 끝내려고합니다. 추측 된 총 횟수가 표적을 발견했을 때만 인쇄하도록 요구합니다.목표를 찾았을 때 총 추측 수만 인쇄하도록이 코드를 어떻게 변경합니까?

퀴즈에 대한 링크 : link

/* Returns either the index of the location in the array, 
    or -1 if the array did not contain the targetValue */ 
var doSearch = function(array, targetValue) { 
    var min = 0; 
    var max = array.length - 1; 
    var guess; 
    while(min <= max) { 
     guess = Math.floor((max + min)/2); 
     if (array[guess] === targetValue) { 
      return guess; 
     else if (array[guess] < targetValue) { 
      min = guess + 1; 
     } 
     else { 
      max = guess - 1; 
      println(guess); 
     } 
    } 
    return -1; 
}; 


var primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 
       41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]; 

var result = doSearch(primes, 73); 
println("Found prime at index " + result); 

Program.assertEqual(doSearch(primes, 73), 20); 
+0

코드 실행의 어느 부분이 대상을 발견했을 때? 그럴 때'println (guess)'을 실행할 수 있습니까? 또한 구문 오류가 있습니다. 첫 번째'if' 블록의 끝에'}'가 없습니다. –

+0

나는 당신의 코드를 테스트했다. 누락 된'}'을 추가하면, 코드는 마지막 라인에서 테스트를 통과시킨다. – davidhu2000

답변

0

시도가 추측들의 수를 유지하는 전역 변수를 추가하고, 새로운 생각 나는 처리 될 때마다 이것을 증가. 새로운 검색을 시작할 때마다 0으로 설정하십시오.

이렇게 멀리 갔다면, 전역 변수를 doSearch 함수에 넣고 doSearch 함수 리턴 유형을 배열로 변경할 수 있습니다. 그런 다음 배열은 원래의 반환 값과 추측 수를 모두 유지할 수 있습니다.

+0

코드 샘플을 제공하면이 답변을 향상시킬 수 있습니다. 그렇게하면 더 명확해질 것입니다. – byxor

0

추측에 계속 반영하려면 변수가 필요합니다. 다른 변수가 정의 된 함수 본체에

var guesscount;

를 추가 한 후 잠시 루프에 경우 명령문 전에

guesscount = guesscount + 1;

를 추가하여 증가. 그런 다음 사용하여 결과를 인쇄 할 수 있습니다

println("Number of guesses: " + guesscount);