# Frage Methode ggt Rekursiv



## AlexD (27. Nov 2012)

Hallo zusammen, 

ich habe mal wieder eine Frage!

Ich muss eine Rekursive Methode schreiben die den ggt zweiter Zahlen ausrechnet.

Wenn ich die Methode im Debugmodus ausführe, wird die zahl bis zu einem gewissen Wert berechnet und zwar korrekt bis x = 0 ist. Dann passiert aber irgendwas was ich nicht verstehe und es werden die beiden Werte x und y ausgegeben.

Bitte kann mir da einer nen Tip geben!

BITTE NICHT DIE LÖSUNG!!!!!


```
/**
	 * Eine Rekursive Methode die das ggt von 2
	 * natürlichen Zahlen berechnet
	 * @return 
	 */
	
	public static double ggt(int x,int y){
	
		if (x==0){
			return y;
		}
		else if (y!=0){
			if(x>y){
				x = x-y;
			}else {
				y=y-x;
			}
			
		ggt(x, y);	
		
		}

		return x;
	}	
	
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	int y = 600;
	int x = 380;
		
	System.out.println(ggt(x,y));

}
}
```


----------



## Gism0 (27. Nov 2012)

Formuliere dir mal aus was du dort als Code hast.

(z.b. in einem Strucktogramm oder halt als Text)

Und überlege dabei mal was in Zeile 19 passiert


----------



## nillehammer (27. Nov 2012)

Du musst Dir das Ergebnis des rekursiven Aufrufs entweder merken oder es zurück geben. Einfach so:
[JAVA=19]
ggt(x, y);  
[/code]
ist es relativ witzlos.


----------



## Spewer (27. Nov 2012)

Ich geb dir einen Tipp. Versuch mal mit dem "%-Operator" zu arbeiten.


----------



## TryToHelp (27. Nov 2012)

mhh wieso den den Modolus-Opperator?
ich würde mir den Tip von nillehammer genauer anschauen ;-)


----------



## AlexD (27. Nov 2012)

Super vielen Dank für die Hilfe!!!

Ich habs jetzt umgeschrieben und es funktioniert 


[Java]public static int ggt(int x,int y){


		if (x==0){

			return y;}
		else if (y!=0){
			if(x>y){
			x=x-y;
		}else {
			y=y-x;

		}

		}
			else if(y==0){
				return x;
			}
				return ggt(x,y);
		}[/Java]


----------

