내 재귀적인 이진 검색 문제를 어떻게 끝내는 지 설명해 주실 분 있나요? 재귀적인 측면은 나를 혼란스럽게합니다. 나는 가능하다면 그 일을하는 것에 대한 설명을 좋아할 것이다 !!! 나는 if 또는 elsif 안에있는 '절반'값을 증가시켜야한다고 생각하지만, 어떻게 생겼는지는 모른다. 리팩토링하는 것보다는 현재 가지고있는 코드를 더 간단한 방법으로 추가하는 방법을 제안하십시오 ... 적어도 처음에는! 감사!수동 바이너리 검색 마무리
def binary_search(letter, array)
half = (array.length - 1)/2
if letter == array[half]
return half
end
if letter > array[half] && letter <= array[-1]
array = array[half...array.length]
binary_search(letter, array)
elsif letter < array[half] && letter >= array[0]
array = array[0...half]
binary_search(letter, array)
else
nil
end
end
arr = [:A, :B, :C, :D, :E, :F, :G]
p binary_search(:C, arr)
를 출력 일부 약간의 차이는합니다 : HTTP : // rosettacode. org/wiki/Binary_search # Ruby – JLB