Methoden Rekursive Methoden Runter- & Hochzählen

emreiu

Mitglied
Hallo,

kann mir jemand erklären, warum die Ausgabe nicht bei 0 aufhört, sondern wieder hochzählt bis 2?
Mir ist klar, dass dies durch die letzte print Methode erfolgt, aber der Grund ist mir völlig unklar. Wenn der Zähler bei 0 ankommt, sollte die Ausgabe nicht dort aufhören?

Java:
public class Test {
        public static void main(String[] args) {
            count(2);
        }

        public static void count(int n) {
            if (n <= 0) {
                System.out.println(n);
            } else {
                System.out.println(n);
                count(n - 1);
                System.out.println(n);
            }
        }
}
 
Zuletzt bearbeitet:
Beste Antwort
Die letzte Ausgabe des ersten Aufrufes der Methode (mit Argument n=2) gibt ja einfach das n aus, was zu diesem ersten Aufruf eben 2 ist.
Deshalb ist die allerletzte Ausgabe dieses Programmes "2".
Es ist eben das, was der erste Aufruf der Methode macht, nachdem alle rekursiven Aufrufe, die eine Zeile vorher gestartet wurden, wieder zurückgekehrt sind.
Die Argumente der rekursiven Aufrufe ändern ja nichts an dem Argument (also dem n) eines übergeordneten Aufrufes. Jeder Aufruf bekommt sein eigenes 'n'.
Die letzte Ausgabe des ersten Aufrufes der Methode (mit Argument n=2) gibt ja einfach das n aus, was zu diesem ersten Aufruf eben 2 ist.
Deshalb ist die allerletzte Ausgabe dieses Programmes "2".
Es ist eben das, was der erste Aufruf der Methode macht, nachdem alle rekursiven Aufrufe, die eine Zeile vorher gestartet wurden, wieder zurückgekehrt sind.
Die Argumente der rekursiven Aufrufe ändern ja nichts an dem Argument (also dem n) eines übergeordneten Aufrufes. Jeder Aufruf bekommt sein eigenes 'n'.
 
Beste Antwort
Die letzte Ausgabe des ersten Aufrufes der Methode (mit Argument n=2) gibt ja einfach das n aus, was zu diesem ersten Aufruf eben 2 ist.
Deshalb ist die allerletzte Ausgabe dieses Programmes "2".
Es ist eben das, was der erste Aufruf der Methode macht, nachdem alle rekursiven Aufrufe, die eine Zeile vorher gestartet wurden, wieder zurückgekehrt sind.
Die Argumente der rekursiven Aufrufe ändern ja nichts an dem Argument (also dem n) eines übergeordneten Aufrufes. Jeder Aufruf bekommt sein eigenes 'n'.

Ach, jetzt wo du es sagst, eigentlich völlig simple. Danke für die schnelle und hilfreiche Antwort!
 

Neue Themen


Zurück
Oben