Chủ đề
- #Hàm đệ quy
- #Đệ quy đuôi
- #TCO
Đã viết: 2024-10-12
Đã viết: 2024-10-12 18:47
Trong khi học lập trình kiểm tra mã, và thêm hiệu ứng hoạt hình vào văn bản,
khi đang viết hàm đệ quy, tôi đã biết đến khái niệm TCO (Tail Call Optimization) nhờ sự trợ giúp của AI.
Tối ưu hóa đệ quy đuôi giúp ngăn ngừa lỗi tràn ngăn xếp do các cuộc gọi đệ quy gây ra và làm cho việc sử dụng bộ nhớ hiệu quả hơn.
Trong JavaScript, nó được chỉ định để hỗ trợ trong chế độ strict es6, nhưng có vẻ như vẫn chưa có nhiều trình duyệt hỗ trợ.
Đệ quy thông thường
Đệ quy đuôi
Phương pháp kết thúc phép tính cuối cùng của hàm bằng một cuộc gọi hàm đệ quy được gọi là đệ quy đuôi.
Khung ngăn xếp hàm không cần thiết nữa, do đó tối ưu hóa việc sử dụng bộ nhớ!
Trong JavaScript, phương pháp để thực hiện đệ quy đuôi là sử dụng kỹ thuật trampoline.
Trong phương pháp này, hàm factorialTCO không trả về kết quả trực tiếp mà trả về một hàm.
Hàm trampoline tiếp tục thực thi các hàm được trả về này để có được kết quả cuối cùng.
Nó được cho là một kỹ thuật quan trọng trong lập trình hàm, và thật thú vị khi nó giải quyết được nhược điểm của hàm đệ quy thông thường (tràn ngăn xếp). Thực tế là tôi không hiểu trực quan khi chỉ nhìn vào mã, vì vậy tôi cần phải tìm hiểu thêm một lần nữa.
Bình luận0