# rekursive Binaere Suche



## kulturfenster (3. Mai 2007)

hallo allerseits!
meine binäre Suche bockt (=> Stack Overflow). Sieht jemand den Fehler?


```
// zahl ist die gesuchte Zahl, l steht für low, h für high
public int binaereSuche(int zahl, int l, int h)
	{
		int mid = (l + h)/2;
		if(mid == zahl)
			return mid;
		if(zahl < mid)
		{
			binaereSuche( zahl,  l,  mid-1);
		}
		
		if(zahl > mid)
		{
			binaereSuche(zahl, mid + 1, h);
		}

		return -1;
	}
```


----------



## Der Müde Joe (3. Mai 2007)

return binarySearch(...);


----------



## Leroy42 (3. Mai 2007)

Edit: Auch Schrott!


----------



## SlaterB (3. Mai 2007)

da machst du ein Thread.sleep(100), damit es nicht so schnell ist,
dann am Anfang
System.out.println(" zahl ist, l ist, r ist ...);
wenn du dann noch nicht die Endlosschleife siehst,

dann noch mehr Ausgaben:
System.out.println(" neues mid ist...);

System.out.println(" zahl < mid, wähle als Grenze: ...);
System.out.println(" zahl > mid, wähle als Grenze: ...);

usw.
das einfachste der Welt

-------

@Leroy: linke Grenze weglassen oder wie??


----------



## Leroy42 (3. Mai 2007)

Upps! Dein Programm hat ja noch andere Fehler:

```
...
```

War Schrott!


----------



## Der Müde Joe (3. Mai 2007)

das Problem ist, dass nur -1 zurückgegeben werden kann...

es Fehlen die return!!!!
if{
return binearesSuchen();
}else{
return binearesSuchen();
}


----------



## Leroy42 (3. Mai 2007)

Der Müde Joe hat gesagt.:
			
		

> das Problem ist, dass nur -1 zurückgegeben werden kann...
> 
> es Fehlen die return!!!!
> if{
> ...



Richtig! Aber OP spricht von StackOverflow.

Das kann nur dann passieren, wenn zahl nicht zwischen l und h liegt:

Beispiel: 

```
binaereSuche(1, 2, 100);
```


----------



## Der Müde Joe (3. Mai 2007)

da start ich doch promt mal eclipse


----------



## Leroy42 (3. Mai 2007)

Der Müde Joe hat gesagt.:
			
		

> da start ich doch promt mal eclipse



Warmduscher!  :bae:


----------



## Der Müde Joe (3. Mai 2007)

wenn die gesuchte Zahl kleiner/grösser ist als die Range kommt er in eine endlos schleife

EDIT:
zb l= 7 h = 9  mid = 8
return binaryS(1 , 7 , 9) ...mid wieder 8.....


----------



## Leroy42 (3. Mai 2007)

Der Müde Joe hat gesagt.:
			
		

> wenn die gesuchte Zahl kleiner/grösser ist als die Range kommt er in eine endlos schleife



Das herauszufinden geht bei Nicht-_Warmduschern_ auch ohne Eclipse.

(  )

 :toll:


----------



## Der Müde Joe (3. Mai 2007)

jo...aber bin am Mittagessen....
drum Debugger.....sonst nehm ich die Luppe und
schau die einzelnen Bits an tanzen :lol:


----------



## Leroy42 (3. Mai 2007)

LOL


----------

