Рекурсивный метод двоичного поиска, имеющий только 2 аргумента

Хорошо, это для школьного задания. У меня не было проблем с рекурсивным бинарным поиском, но в назначении прямо говорится, что метод должен принимать только 2 аргумента, список и элемент, который вы ищете. Вот где я немного заблудился.

public int binarySearch(List<Card> cards, Card key)
{
    int mid = (cards.size()) / 2;
    if(cards.size() == 1) {
        if(key.equals(cards.get(0))) {
            return 0;
        }
    }
    else {
        if(key.equals(cards.get(mid))) {
            return mid;
        }
        else if(key.compareTo(cards.get(mid)) == - 1) {
            return binarySearch(cards.subList(0, mid), key);
        }
        else if(key.compareTo(cards.get(mid)) ==  1) {
            return mid + 1 + binarySearch(cards.subList(mid + 1, cards.size()), key);
        }
    }
    return -1;
}

Так что это будет работать нормально, если я не буду искать что-то, чего не существует и не принадлежит к верхней половине списка. Поскольку я передаю только 2 аргумента, мне нужно изменять список при каждом рекурсивном вызове, однако, если он находится в верхней половине, я не могу потерять свое индексное пятно, поэтому мне нужно добавить их туда с помощью рекурсивного вызова, если он оказывается не в верхней половине, тогда он возвращает -1 + все те индексы, которые я учел ранее. Есть ли способ очистить все это и заставить его просто вернуть -1? Любые советы приветствуются.

8
задан Raedwald 25 January 2015 в 20:00
поделиться