Frage Methode ggt Rekursiv

AlexD

Aktives Mitglied
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!!!!!

Java:
/**
	 * 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));

}
}
 
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
 
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.
 
mhh wieso den den Modolus-Opperator?
ich würde mir den Tip von nillehammer genauer anschauen ;-)
 
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]
 

Zurück
Oben