The Algorithms logo
The Algorithms
AboutDonate

Recursive Double Linear Search

S
# 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