Se capisci molto bene lo stack, capirai come funziona la memoria in programma e se capisci come funziona la memoria in programma capirai come la funzione memorizza in programma e se capisci come la funzione memorizza in programma capirai come funzione ricorsiva funziona e se capisci come funziona la funzione ricorsiva capirai come funziona il compilatore e se capisci come funziona il compilatore la tua mente funzionerà come compilatore e eseguirai il debug di qualsiasi programma molto facilmente
Lascia che ti spieghi come funziona lo stack:
Per prima cosa devi sapere come memorizzare le funzioni nello stack:
Valori di allocazione della memoria dinamica del deposito heap.
Assegnazione automatica degli stack e valori di cancellazione.
Comprendiamoconl'esempio:
defhello(x):ifx==1:return"op"
else:
u=1
e=12
s=hello(x-1)
e+=1
print(s)
print(x)
u+=1
return e
hello(4)
Ora comprendi parti di questo programma:
Oravediamocosaèlostackequalisonolepartidellostack:
Allocationofthestack:
Ricordaunacosa,seunaqualsiasifunzioneottiene"return", indipendentemente dal fatto che abbia caricato tutte le sue varibles locali o qualsiasi cosa restituisca immediatamente dallo stack il suo stack frame. Significa che quando una funzione ricorsiva ottiene la condizione di base e noi restituiamo il ritorno dopo la condizione di base, quindi la condizione di base non aspetterà di caricare le variabili locali che si trovano nella parte "else" del programma restituirà immediatamente il frame corrente dallo stack e ora se un frame return next frame è nel record di attivazione.
Vedi questo in pratica:
Deallocationoftheblock:
Quindioraognivoltacheunafunzionetrovaun'istruzionereturn,cancellailframecorrentedallostack.
mentreilritornodalvaloredellostackritorneràinordineinversodiordineincuisonostatiallocatinellostack.
Questesonodescrizionimoltobreviesevuoisapernedipiùapprofonditamentesustackedoppiaricorsioneleggiduepostdiquestoblog:
Ulteriori informazioni sullo stack passo dopo passo
Ulteriori informazioni sulla doppia ricorsione passo per passo con lo stack