더북(TheBook)
// 앞의 binIndexOf 함수를 코틀린 컴파일러가 컴파일한 결과는 이런 식으로 루프로 작동한다
fun binIndexOf(
  x: Int,
  array: IntArray,
  from: Int = 0,
  to: Int = array.size
): Int {
  var fromIndex = from
  var toIndex = to
  
  while (true) {
    if (fromIndex == toIndex) return -1
    val midIndex = (fromIndex + toIndex - 1) / 2
    val mid = array[midIndex]
    
    when {
      mid < x ->fromIndex = midIndex + 1
      mid > x ->toIndex = midIndex
      else -> return midIndex
    }
  }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.