# Euklidischer Algorithmus in Java und keine Terminierung.



## natural_born_chilla (17. Dez 2005)

Hallo ihr alle,

da bin ich nochmal. Kann mir einer sagen, warum der Algorithmus hier nicht terminiert:


```
public static int ggT(int a, int b) 
	{
	while (a != b); {
	    if (a > b) {a = a - b;}
	    else {b = b - a;};
	}
	int ggTerg = a;
	return ggTerg; 
	}
```

dieser hier aber schon:


```
public static int ggT(int a, int b)
	{
	    if (b==0)
	        return a;
	    else
	        return ggT(b, a%b);
	}
```

?

Ich kann es nicht nachvollziehen... wäre dankbar für nen Hinweis.

Schönes Wochenende noch!


----------



## Gast (17. Dez 2005)

Hast du wirklich ein Semikolon hinter der while-Bedingung? Das würde ich nochmal prüfen...

Johannes


----------



## bygones (17. Dez 2005)

die while bedinung heißt mache etwas solange a und b ungleich sind...

d.h. er bricht nur dann ab wenn a == b ist.. wahrscheinlich wird das nie der fall sein ^^


----------



## natural_born_chilla (17. Dez 2005)

Oh mein Gott! Peinlich, peinlich... aber dafür war der Algorithmus richtig 

Have a nice Weekend!


----------



## natural_born_chilla (17. Dez 2005)

@deathbyaclown: Natürlich bricht sie ab, spätestens bei a == b == 1... Sind doch integers.


----------



## bygones (17. Dez 2005)

natural_born_chilla hat gesagt.:
			
		

> @deathbyaclown: Natürlich bricht sie ab, spätestens bei a == b == 1... Sind doch integers.


verdammt stimmt - habe die if bedingung irgendwie übersehen... mhm ok ziehe meinen Vorschlag zurück


----------



## Gast (17. Dez 2005)

Genaugenommen: Wenn a oder b kleiner 1 sind, terminiert er auch nicht...


----------



## natural_born_chilla (17. Dez 2005)

Oh, danke, das werd ich dann grad noch ausschließen!


----------

