TheAlgorithms-Ruby/searches/recursive_double_linear_search.rb

27 lines
663 B
Ruby

# Iterate through the array to find the index of key using recursion.
def recursive_double_linear_search(data, key, left = 0, right = 0)
right &&= data.length - 1
return -1 if left > right
return left if data[left] == key
return right if data[right] == key
recursive_double_linear_search(data, key, left + 1, right - 1)
end
puts(recursive_double_linear_search([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 5))
# => 5
puts(recursive_double_linear_search([1, 2, 4, 5, 3], 4))
# => 2
puts(recursive_double_linear_search([1, 2, 4, 5, 3], 6))
# => -1
puts(recursive_double_linear_search([5], 5))
# => 0
puts(recursive_double_linear_search([], 1))
# => -1