Denken Sie an rekursive Aufrufe in Form eines Stapels. Ein Stapel ist eine Datenstruktur, die an der Spitze eines Stapels hinzugefügt wird. Eine Analogie aus der realen Welt ist ein Stapel von Gerichten, bei denen das neueste Gericht ganz oben steht. Deshalb fügen rekursive Aufrufe eine weitere Ebene an den Anfang des Stapels, und sobald einige Kriterien erfüllt sind, die weitere rekursive Aufrufe verhindern, beginnt der Stapel sich zu entspannen und wir arbeiten uns wieder zurück zum ursprünglichen Gegenstand (der erste Teller im Stapel) .
Die Eingabe eines rekursiven Verfahren tendiert zu einer Basisfall die der Faktor Beendigung ist und verhindert, dass die Methode aus sich selbst auf unbestimmte Zeit (Endlosschleife) aufruft. Sobald diese Basisbedingung erfüllt ist, gibt die Methode einen Wert zurück, anstatt sich selbst erneut aufzurufen. So wird der Stapel abgewickelt.
In Ihrer Methode ist der Basisfall, wenn $ n < 1 $ und die rekursiven Aufrufe die Eingabe $ n-1 $ verwenden. Dies bedeutet, dass die Methode sich selbst aufruft und jedes Mal $ n $ um 1 verringert, bis $ n < 1 $, d. H. $ N = 0 $. Sobald die Basisbedingung erfüllt ist, wird der Wert 0 zurückgegeben und wir beginnen, die $ for $ -Schleife auszuführen. Aus diesem Grund enthält die erste Zeile einen einzelnen Stern.
Also, wenn Sie die Methode mit einem Eingang 5 laufen, bauen die rekursive Aufrufe einen Stapel von Werten von $ n $ als so
0
1
2
3
4
5
Dann wird dieser Stapel abgewickelt mit oben nach unten, 0, alle der Weg nach unten.
Wenn 'System.out.print (" * ");' vor _ 'Asterisk (n-1) aufgetreten ist;', wäre die Ausgabe, was Sie erwarten. – pathfinderelite
So geht die Logik: 'Asterisk (n)' => 'Asterisk (n-1)' => ... => 'Asterisk (0)' => drucke Statements von 'Asterisk (1)' gefolgt von Druckanweisungen von 'Asterisk (2)' gefolgt von ... gefolgt von Druckanweisungen von 'Asterisk (n)'. Im Grunde: 'Asterisk (Asterisk (Asterisk (... Asterisk (1) ...))), wo du' n' geschachtelte Methoden hast. Wenn du Mathematik kennst, weißt du, dass du mit "Asterisk (1)" beginnst und deinen Weg nach draußen gehst. – Gendarme
Bitte vergessen Sie nicht, die beste Antwort zu wählen, wenn Ihnen eine unserer Antworten gefallen hat. –