Wie funktionert Stack in Java?
es wird ja in der methode immer t um eins erhöht und dann geprintet, es wird jedoch rückwärtsgeprintet, weil t immer wieder auf den stack kommt und dieser dann von oben abgearbeitet wird. Wenn t== 11 ist wird kommt ja "return", was heißt das genau, es müsste ja eigentlich gleich zu System.out...usw. springen, aber wieso, müsste es nicht theoretisch nur aus dem if block gehen und dann wäre es ja aber ein endlosschleife. Also wie schaut das hier genau aus mit dem return?
Hmm anscheinend ist die Frsge zu Advanced ich frag mal bei Stackoverflow, da sind die aber irgendwie zu arrogant
1 Antwort
Inwiefern ist die Frage zu advanced, ist doch ziemlich einfach, deine Erklärung ist nur suboptimal ;)
Es geht hier um Rekursion.
go(t) // t = 9
if (t==11) return; // false
t++ // t = 10
go(t) // t = 10
if (t=11) return // false
t++ // t = 11
go(t) // t = 11
if (t==11) return // true
print(t) // prints 11
print(t) // prints 10
Es wird sozusagen jedesmal in dem Ablauf pausiert und ein neues Unterprogramm aufgemacht. Sobald eine Funktion fertig ist (return'd), wird dann von dem letzten die Ausführung fertiggestellt mit den Prints.