Programm zum Analysieren

TeJay

Mitglied
Hallo Leute,

ich wollt euch mal fragen, ob es ein Programm gibt, wo ich die Hintergründe von einem Java-Programm genau analysieren kann, wie man auf ein Ergebnis kommt. Ich komme zum Beispiel bei folgenden Java-Code nie auf das Ergebnis.

Java:
public class Test {

public static void main(String[] args) {
		
		System.out.println(getGGT(84,24));
		
	}
		public static int getGGT(int a, int b) {
		if (a == b) {
			return a;		
		} else if (a < b) {
			return getGGT(a, b - a);
		} else {
			return getGGT(a - b, b);
		}
		
		}
	}

Lösung ist 12. Aber ich komme gar nicht dauf ???:L Vielen Dank im voraus!
 
ich wollt euch mal fragen, ob es ein Programm gibt, wo ich die Hintergründe von einem Java-Programm genau analysieren kann,
Zwei Möglichkeiten:
- Besorg Dir eine IDE (z.B. Eclipse oder NetBeans), setze an Zeilen, die Dich interessieren, einen sog. Breakpoint und lass das Programm im Debug-Modus laufen.
- Baue an Stellen, die Dich interessieren, log-Statements ein. Entweder mit einem Logging-Framework oder ganz einfach mit System.out.println(a); z.B.
 
wie nillehammer schon sagt...einfache Syso´s einbauen:

Java:
	public static int getGGT(int a, int b) {
		System.out.println("Methodenaufruf mit " + a + " und " + b);
		if (a == b) {
			System.out.println("(a == b) ergibt true");
			return a;
		} else if (a < b) {
			System.out.println("\ta ist kleiner als b => ggt für (a, b-a) =>getGGT("
					+ a + "," + (b - a) + ")");
			return getGGT(a, b - a);
		} else {
			System.out.println("\tb ist kleiner als a => ggt für (a-b, b) =>getGGT("
					+ a + "," + (b - a) + ")");
			return getGGT(a - b, b);
		}

	}

Java:
Methodenaufruf mit 84 und 24
	b ist kleiner als a => ggt für (a-b, b) =>getGGT(84,-60)
Methodenaufruf mit 60 und 24
	b ist kleiner als a => ggt für (a-b, b) =>getGGT(60,-36)
Methodenaufruf mit 36 und 24
	b ist kleiner als a => ggt für (a-b, b) =>getGGT(36,-12)
Methodenaufruf mit 12 und 24
	a ist kleiner als b => ggt für (a, b-a) =>getGGT(12,12)
Methodenaufruf mit 12 und 12
(a == b) ergibt true
12
 
oder einfach Stift und Papier und mal das Szenario durchspielen, mit was mit was augerufen, was passiert dann etc...
 

Zurück
Oben