add recursive binary search