diff --git a/searches/recursive_linear_search.rb b/searches/recursive_linear_search.rb index 67065cd..0c80a8d 100644 --- a/searches/recursive_linear_search.rb +++ b/searches/recursive_linear_search.rb @@ -1,30 +1,25 @@ -=begin -A pure Ruby implementation of a recursive linear search algorithm -=end +# A pure Ruby implementation of a recursive linear search algorithm def rec_linear_search(sequence, low, high, target) - unless (high < sequence.length && low < sequence.length) - raise Exception("Invalid upper or lower bound!") - end + raise Exception('Invalid upper or lower bound!') unless high < sequence.length && low < sequence.length - if high < low - return -1 - end - if sequence[low] == target - return low - end - if sequence[high] == target - return high - end + return -1 if high < low - return rec_linear_search(sequence, low + 1, high - 1, target) + 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