Recursive Linear Search

# A pure Ruby implementation of a recursive linear search algorithm

def rec_linear_search(sequence, low, high, target)
  raise Exception('Invalid upper or lower bound!') unless high < sequence.length && low < sequence.length

  return -1 if high < low

  return low if sequence[low] == target

  return high if sequence[high] == target

  rec_linear_search(sequence, low + 1, high - 1, target)
end

puts(rec_linear_search([0, 30, 500, 100, 700], 0, 4, 0))
# => 0

puts(rec_linear_search([0, 30, 500, 100, 700], 0, 4, 700))
# => 4

puts(rec_linear_search([0, 30, 500, 100, 700], 0, 4, 30))
# => 1

puts(rec_linear_search([0, 30, 500, 100, 700], 0, 4, -6))
# => -1