Hallo liebes Forum,
klar, der Fehler liegt bei mir. Aber warum funktioniert dieser Code
Mit Aufruf
Und dieser nicht:
Mit Aufruf
Ich wollte eigentlich Variablen spaaren, Aber grundsätliche Frage. Warum wird mein "int b" nicht angepasst. Es findet doch hier eine Rekursion statt. B behält die ursprünglichen Werte bei. In anderen Programmiersprachen scheint das zu klappen, dass Variablen bei Rekursionen ihre Werte verändertn / anpassen.
klar, der Fehler liegt bei mir. Aber warum funktioniert dieser Code
Java:
static int erg = 0;
public static int gcdWithIf(int a, int b) {
int rest = a % b;
if (rest == 0) {
erg = b;
} else {
gcdWithIf(b, rest);
}
return erg;
}
Mit Aufruf
Java:
System.out.println("GCD with-If:");
System.out.println(gcdWithIf(20, 8)); // ergebnis 4
System.out.println(gcdWithIf(60,96)); // ergebins 12
Und dieser nicht:
Java:
public static int gcdWithIfNotEqual(int a, int b) {
int rest = a % b;
if (rest != 0) {
gcdWithIf(b, rest);
}
return b;
}
Mit Aufruf
Java:
System.out.println("\nGCD with-IfNotEqual:");
System.out.println(gcdWithIfNotEqual(20, 8)); //liefert falscherweise 8 zurück
System.out.println(gcdWithIfNotEqual(60,96)); // liefert falscherweise 96 zurück
Ich wollte eigentlich Variablen spaaren, Aber grundsätliche Frage. Warum wird mein "int b" nicht angepasst. Es findet doch hier eine Rekursion statt. B behält die ursprünglichen Werte bei. In anderen Programmiersprachen scheint das zu klappen, dass Variablen bei Rekursionen ihre Werte verändertn / anpassen.