Binäre Suche im Array mit StackOverflowError

AcridMusak

Mitglied
Hi Leute,
hab nen kleines Problem, ich versuche gerade die binäre Suche im Array rekursiv zu lösen, klappt soweit
ganz gut, aber mein Programm bringt mir immer dann nen StackOverflowError, wenn ein Wert nicht im Array ist, aber nur wenn es in dem Bereich zwischen dem kleinsten und größten Wert im Array liegt.
Was kann ich tun damit bei diesem Fall einfach ne Ausgabe kommt, dass der Wert nicht gefunden wurde.
Java:
        public static void main(String[] args) {
                if(a < array[0] || a > array[array.length-1]){
			System.out.println("Nicht vorhanden!!!");
		}else{
			binaereSuche(array, a, 0, array.length);
		}

	}
	
	public static void binaereSuche(int[] suchArray, int d, int start, int ende){
		int mitte = start+(ende-start)/2;
		if(suchArray[mitte] == d){
			System.out.println("Gefunden!!!" + d);
		}else if(suchArray[mitte] > d){
			binaereSuche(suchArray, d, start, mitte-1);
		}else if(suchArray[mitte] < d){
			binaereSuche(suchArray, d, mitte+1, ende);
		}
	}
 
fiktive Zahlen aber in etwa:
du suchst zwischen Index 5 und 10, Mitte ist 7,
kleiner, also zwischen 5 und 6 suchen, Mitte ist 6,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,
kleiner, also zwischen 5 und 5 suchen, Mitte ist 5,

wann fällt dir per Kopf auf, dass etwas nicht stimmt, welche Bedingung kannst du dafür prüfen?
(außer dass eine Zeile wie die vorherige aussieht, schon direkt an den Werten)
 

Zurück
Oben