Hallo Leute, ich würde mich total freuen, wenn ihr mir bei der folgenden Lösung etwas helfen könntet, denn ich verstehe nicht ganz, was der Compiler bei dem Quellcode macht.
Der Code lautet:
public class Star {
public static void main (String[] args){
System.out.println(starString(3));
}
public static String starString(int n) {
if (n < 0) {
throw new IllegalArgumentException();
} else if (n == 0) {
return "*";
} else {
return starString(n - 1) + starString(n - 1);
}
}
}
Die Aufgabe lautete, es sollen immer so viele Sterne ausgeben, wie 2 hoch dem variablen int ergibt. (also int = 2 -> 2²= 4 Sterne oder int = 3 -> 2³= 8 Sterne)
Und soweit habe ich es verstanden: Setzen wir in der main-Method n = 3. Dann springt der Compiler zum else-Statement und zieht 1 ab, also n = 2. Dann kommt die rekursive Methode zum Einsatz, und das Ganze wiederholt sich so lange, bis n = 0. Wenn n gleich Null ist, wird für beide Seiten der rekursiven Funktion ein "*" ausgegeben (else-if Statement). Nach meinem Verständnis müsste das Programm jetzt zu Ende sein, und ich kann mir nicht erklären, wieso am Schluss acht Sterne ausgegeben werden.
Ich bedanke mich schon im Voraus für eure Hilfe.
Liebe Grüße!
Der Code lautet:
public class Star {
public static void main (String[] args){
System.out.println(starString(3));
}
public static String starString(int n) {
if (n < 0) {
throw new IllegalArgumentException();
} else if (n == 0) {
return "*";
} else {
return starString(n - 1) + starString(n - 1);
}
}
}
Die Aufgabe lautete, es sollen immer so viele Sterne ausgeben, wie 2 hoch dem variablen int ergibt. (also int = 2 -> 2²= 4 Sterne oder int = 3 -> 2³= 8 Sterne)
Und soweit habe ich es verstanden: Setzen wir in der main-Method n = 3. Dann springt der Compiler zum else-Statement und zieht 1 ab, also n = 2. Dann kommt die rekursive Methode zum Einsatz, und das Ganze wiederholt sich so lange, bis n = 0. Wenn n gleich Null ist, wird für beide Seiten der rekursiven Funktion ein "*" ausgegeben (else-if Statement). Nach meinem Verständnis müsste das Programm jetzt zu Ende sein, und ich kann mir nicht erklären, wieso am Schluss acht Sterne ausgegeben werden.
Ich bedanke mich schon im Voraus für eure Hilfe.
Liebe Grüße!