BinarySearchRecursive[x_List, val_, lo_, hi_] := Module[{mid = lo + Round@((hi - lo)/2)}, If[hi < lo, Return[-1]]; Return[ Which[x[[mid]] > val, BinarySearchRecursive[x, val, lo, mid - 1], x[[mid]] < val, BinarySearchRecursive[x, val, mid + 1, hi], True, mid] ]; ]