Jika Anda memahami tumpukan dengan sangat baik maka Anda akan memahami bagaimana memori bekerja dalam program dan jika Anda memahami bagaimana memori bekerja dalam program, Anda akan memahami bagaimana fungsi menyimpan dalam program dan jika Anda memahami bagaimana fungsi menyimpan dalam program Anda akan memahami bagaimana fungsi rekursif bekerja dan jika Anda memahami bagaimana fungsi rekursif bekerja, Anda akan memahami cara kerja kompiler dan jika Anda memahami cara kerja kompiler, pikiran Anda akan berfungsi sebagai kompiler dan Anda akan men-debug program apa pun dengan sangat mudah
Biarkan saya menjelaskan cara kerja tumpukan:
Pertama, Anda harus tahu bagaimana fungsi menyimpan di stack:
Heap menyimpan nilai alokasi memori dinamis. Nilai alokasi dan penghapusan otomatis tumpukan disimpan.
Mari kita pahami dengan contoh:
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)
Sekarang pahami bagian dari program ini:
Sekarang mari kita lihat apa itu stack dan apa itu stack parts:
Alokasi tumpukan:
Ingat satu hal jika ada fungsi mendapatkan "kembali" tidak peduli itu telah memuat semua variabel lokalnya atau apa pun itu akan segera kembali dari tumpukan akan bingkai tumpukannya. Ini berarti ketika setiap fungsi rekursif mendapatkan kondisi basis dan kami mengembalikannya setelah kondisi dasar sehingga kondisi basis tidak akan menunggu untuk memuat variabel lokal yang terletak di bagian "lain" dari program, ia akan segera mengembalikan frame saat ini dari stack dan sekarang jika satu frame kembali frame berikutnya dalam catatan aktivasi. Lihat ini secara praktis:
Deallokasi blok:
Jadi sekarang setiap kali fungsi ditemukan pernyataan kembali itu menghapus bingkai saat ini dari tumpukan.
saat kembali dari nilai tumpukan akan kembali dalam urutan terbalik di mana mereka dialokasikan dalam tumpukan.
Ini adalah deskripsi yang sangat singkat dan jika Anda ingin tahu lebih dalam tentang stack dan double recursion baca dua posting blog ini:
Lebih lanjut tentang tumpukan langkah demi langkah
Lebih lanjut tentang rekursi ganda langkah demi langkah dengan tumpukan