Реализация бинарного поиска C#

Помогите пожалуйста реализовать бинарный поиск на языке C#

l = -1; u = n 
while l   1 != u
    m = (l   u) /2 /* целочисленное деление */
    if x[m] < t
        l = m
    else 
        u = m
 
p = u
if p >= n || x[p] != t
    p = -1

Выше приведён пример наиболее часто реализуемого варианта бинарного поиска на псевдокоде, чисто что б Вы уловили суть алгоритма.

Вот код рекурсивной реализации бинарного поиска на C#:

public static (bool, int) BinarySearch  (T[] sorted_values, int value, bool descending = false) where T : IComparable
{
    (bool, int) SearchOnRange (int left, int right)
    {
        if (left >= right)
            return (False, left);
        if (sorted_values[left] == value)
            return (True, left);
        int middle = left   (right - left) / 2;
        if (sorted_values[middle] == value)
            return middle == left   1
                ? (True, middle)
                : SearchOnRange(left, middle   1);
        return (sorted_values[middle] < value) == descending
            ? SearchOnRange(left, middle)
            : SearchOnRange(middle   1, right);
    }
    return SearchOnRange(0, sorted_values.Length());
}