Jak używać rekursji w tworzeniu algorytmu wyszukiwania binarnego

Wykorzystałem swój czas poza uczelnią, aby ćwiczyć język Java za pomocą algorytmów kodowania. Jednym z algorytmów, które kodowałem, było wyszukiwanie binarne:

public class BinarySearch {

    private static int list[] = {3, 6, 7, 8, 9, 10};

    public static void main(String[] args) {
        BinarySearch b = new BinarySearch();
        b.binarySearch(list);

    }

    public void binarySearch(int[] args) {
        System.out.println("Binary search.");

        int upperBound = args.length;
        int lowerBound = 1;
        int midpoint = (upperBound + lowerBound) / 2;
        int difference = upperBound - lowerBound;

        int search = 7;

        for (int i = 0; i < args.length; i++) {
            if (search < args[midpoint - 1] && difference != 1) {
                upperBound = midpoint - 1;
                midpoint = upperBound / 2;
            } else if (search > args[midpoint - 1] && difference != 1) {
                lowerBound = midpoint + 1;
                midpoint = (lowerBound + upperBound) / 2;

            } else if (search == args[midpoint - 1]) {
                midpoint = midpoint - 1;

                System.out.println("We found " + search + " at position " + midpoint + " in the list.");
                i = args.length;
            } else {
                System.out.println("We couldn't find " + search + " in the list.");
                i = args.length;
            }
        }
    }
}

Naprawdę chcę być w stanie napisać znacznie czystszy i skuteczniejszy algorytm wyszukiwania binarnego, alternatywę dla tego, co zakodowałem. Widziałem przykłady użycia rekursji, na przykład podczas robienia silni z liczbami, które rozumiem. Jednak gdy koduję coś z tej złożoności, jestem zdezorientowany, jak go wykorzystać na moją korzyść. Dlatego moje pytanie brzmi, jak zastosować rekurencję podczas kodowania algorytmu wyszukiwania binarnego. A jeśli masz jakieś wskazówki, aby doskonalić swoje umiejętności rekurencyjne, nawet jeśli nie ma to znaczenia w przypadku wyszukiwania binarnego, możesz to zrobić.

questionAnswers(8)

yourAnswerToTheQuestion