Rekrusive Funktion spinnt

EddieG

Erfahrenes Mitglied
Hi,
ich versuche eine Funktion zu bauen, die den Größten gemeinsamen Teiler zweier zahlen ausgibt.
Allerdings wird bei mir die zweite Methode rot unterstrichen und ich finde den Fehler nicht!
PHP:
public class Aufgabe5 {

	/**
	 * @param args
	 */

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

		String aEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie a Ein");
		int a = Integer.parseInt(aEingabe);
		
		String bEingabe = javax.swing.JOptionPane.showInputDialog("Geben Sie b Ein");
		int b = Integer.parseInt(bEingabe);
		
		int ergebnis;
		ergebnis = GGT_Rechnung(a,b);
	}
	
	public static int GGT_Rechnung(int a,int b)
	{

	int ergebnis;
		if (a==b)
		{
			return a;
		}
		else if (a>b)
		{
			ergebnis = GGT_Rechnung(a-b,b);
			
		}
		else if (a<b)
		{
			return a;
		}
	
	}

}
 
Zuletzt bearbeitet:
Ja, du hast auch keinen else-Fall. Wenn keiner deiner Abfragen ein true zurückliefert würde diene Methode nichts zurückgeben, ergo entsteht ein Fehler. Sorry den Fall hatte ich übersehen. Also entweder du setzt an beiden Stellen ein return, oder ein return, nach allen Abfragen.


Zudem möchte ich dich auf die Nettique hinweisen, in der steht, dass auf Groß- und Kleinschreibung geachtet werden soll.
 
Habe die Rechtschreibung verbessert...
Uhm ich habe es nun so geschrieben
Code:
public static int GGT_Rechnung(int a,int b)
	{

	int e;
	e = 0;
		if (a==b)
		{
			
		}
		else if (a>b)
		{
			e = GGT_Rechnung(a-b,b);
			
			
		}
		else if (a<=b)
		{
		e=a;
		}
		return e;

	}

}
Ok ich habe es ;)
DANKE!
 
Zuletzt bearbeitet:
Sinnvoller wäre vielleicht doch folgender Ansatz:

Java:
public static int GGT_Rechnung(int a, int b) {
    if(a > b) {
        return GGT_Rechnung(a - b, b);
    } else if(a < b) {
        return a;
    }

    return 0;
}

Soll nur eine Algorithmusoptimierung sein (und ein Wink für die Formatierung ;)).

Viele Grüße,
MAN
 
Zurück