Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Schönes Beispiel, daran kannste schön einen Debugger testen.
Das erste System.out.println gibt 43210 aus. Direkt danach wird rekursiv wieder die Funktion aufgerufen, bis die Abbruch Bedingung a==0 erreicht wird. Danach gibt das zweite System.out.println, das ganze jeweils noch mal rückwärts aus.
Es wird also nicht hochgezählt sondern a jeweils nochmal ausgegeben, wobei als erstes der innerste Rekursions Aufruf sein a ausgibt.
Moin moin
also kann demnach sagen dass eine Rekursion zu guter Letzt immer das ganze jeweils noch mal
rückwärts ausgibt oder was?
Was soll das für einen Sinn machen?
Der Knackpunkt hier ist dein zweites System.out nach dem rekursiven Aufruf von rekursion.
Wenn der Aufruf zurückkommt wird natürlich ganz normal der nächste Befehl ausgeführt, der in deinem Fall das System.out ist, danach wird die Methode beendet und die nächste wird "abgebaut". Klaro ;-)
OK akzeptiert!
Was mich bei der Sache verwirrt ist :
a wird dekrementiert bis 0 und solange nicht wird rekursion(a) aufgerufen
Code:
a--;
System.out.println(a);
if (a!=0) rekursion(a);
System.out.println(a);
deswegen diese Ausgabe 4 3 2 1 0
und ab a = 0, wird rekursion(a) nichtmehr aufgerufen
und geht in die nächste Zeile und macht System.out.println(a)
und genau das 0 1 2 3 4 wird ausgegeben warum das ist doch
0 und schon garnicht fünf Zahlen zugleich. Was ist das Hexerei oder was???
Jetzt wird:
(Rekursion Schritt 1 mit a = 5) a = 4 wird ausgegeben - rekursion(4) wird aufgerufen
__(Rekursion Schritt 2 mit a = 4) a = 3 wird ausgegeben - rekursion(3) wird aufgerufen
____(Rekursion Schritt 3 mit a = 3) a = 2 wird ausgegeben - rekursion(2) wird aufgerufen
______(Rekursion Schritt 4 mit a = 2) a = 1 wird ausgegeben - rekursion(1) wird aufgerufen
________(Rekursion Schritt 5 mit a = 1) a = 0 wird ausgegeben - rekursion(0) wird nicht aufgerufen
________(Rekursion Schritt 5) beendet nun seine routine und gibt a = 0 aus
______(Rekursion Schritt 4) beendet nun seine routine und gibt a = 1 aus
____(Rekursion Schritt 3) beendet nun seine routine und gibt a = 2 aus
__(Rekursion Schritt 2) beendet nun seine routine und gibt a = 3 aus
(Rekursion Schritt 1) beendet nun seine routine und gibt a = 4 aus