Se capisci molto bene lo stack, allora capirai come funziona la memoria nel programma e se capisci come funziona la memoria nel programma, capirai come l'archivio funzioni nel programma e se capisci come l'archivio funzioni nel programma capirai come funziona la funzione ricorsiva 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
Lasciami spiegare come funziona lo stack:
Per prima cosa devi sapere come store di funzioni nello stack:
Valori di allocazione della memoria dinamica dell'heap store. Stack store valori di allocazione e cancellazione automatici.
Comprendiamo con esempio:
def hello(x):
if x==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 capisci parti di questo programma:
Ora vediamo cos'è lo stack e quali sono le parti dello stack:
Allocazione dello stack:
Ricorda una cosa se una qualsiasi funzione ottiene "return", indipendentemente dal fatto che abbia caricato tutte le sue variabili locali o qualsiasi cosa restituisca immediatamente dallo stack, sarà il suo frame dello stack. Significa che quando una qualsiasi funzione ricorsiva ottiene la condizione di base e mettiamo 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 ritorna il prossimo fotogramma è nel record di attivazione. Vedi questo in pratica:
Deallocation del blocco:
Quindi ora ogni volta che una funzione trova un'istruzione return, cancella il frame corrente dallo stack.
mentre ritornano dal valore dello stack torneranno in ordine inverso rispetto all'ordine in cui sono stati allocati nello stack.
Queste sono una descrizione molto breve e se vuoi saperne di più sullo stack e sulla doppia ricorsione leggi due post di questo blog:
Maggiori informazioni sullo stack passo dopo passo
Maggiori informazioni sulla doppia ricorsione passo dopo passo con lo stack