Nếu bạn hiểu rất rõ về stack thì bạn sẽ hiểu bộ nhớ hoạt động như thế nào trong chương trình và nếu bạn hiểu cách bộ nhớ hoạt động trong chương trình, bạn sẽ hiểu cách lưu trữ chức năng trong chương trình và nếu bạn hiểu cách lưu trữ chức năng trong chương trình, bạn sẽ hiểu chức năng đệ quy hoạt động như thế nào và nếu bạn hiểu chức năng đệ quy hoạt động như thế nào bạn sẽ hiểu cách trình biên dịch hoạt động và nếu bạn hiểu cách trình biên dịch hoạt động, tâm trí của bạn sẽ hoạt động như trình biên dịch và bạn sẽ gỡ lỗi bất kỳ chương trình nào rất dễ dàng
Hãy để tôi giải thích cách stack hoạt động:
Trước tiên, bạn phải biết cách lưu trữ hàm trong stack:
Heap lưu trữ các giá trị cấp phát bộ nhớ động. Ngăn xếp lưu trữ tự động phân bổ và xóa giá trị.
Hãy hiểu ví dụ:
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)
Bây giờ hãy hiểu các phần của chương trình này:
Bây giờ hãy xem stack là gì và các phần stack là gì:
Phân bổ ngăn xếp:
Hãy nhớ một điều nếu bất kỳ chức năng nào nhận được trở lại của Google, bất kể nó đã tải tất cả các biến địa phương của anh ta hay bất cứ thứ gì nó sẽ ngay lập tức trở về từ ngăn xếp của anh ta. Điều đó có nghĩa là khi bất kỳ hàm đệ quy nào nhận được điều kiện cơ sở và chúng ta đặt trả về sau điều kiện cơ sở để điều kiện cơ sở sẽ không chờ để tải các biến cục bộ nằm trong một phần khác của chương trình, nó sẽ ngay lập tức trả về khung hiện tại từ ngăn xếp và bây giờ nếu một khung Trả lại khung tiếp theo là trong hồ sơ kích hoạt. Xem điều này trong thực tế:
Giao dịch của khối:
Vì vậy, bây giờ bất cứ khi nào một hàm tìm thấy câu lệnh return, nó sẽ xóa khung hiện tại khỏi ngăn xếp.
trong khi trả về từ giá trị ngăn xếp sẽ trả về thứ tự ngược lại theo thứ tự mà chúng được phân bổ trong ngăn xếp.
Đây là những mô tả rất ngắn và nếu bạn muốn biết sâu hơn về stack và đệ quy kép, hãy đọc hai bài đăng của blog này:
Tìm hiểu thêm về ngăn xếp từng bước
Tìm hiểu thêm về đệ quy đôi từng bước với ngăn xếp