뚠뚠멍의 생각들

Tối ưu hóa đệ quy đuôi (Tail Call Optimization)

  • Ngôn ngữ viết: Tiếng Hàn Quốc
  • Quốc gia: Tất cả các quốc giacountry-flag
  • CNTT

Đã 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

[Phi chuyên ngành, trở thành Developer] 14. Tóm tắt những câu hỏi kỹ thuật thường gặp trong phỏng vấn tuyển dụng Developer mớiBài viết này tóm tắt những câu hỏi kỹ thuật thường gặp trong phỏng vấn tuyển dụng Developer mới (vùng nhớ, cấu trúc dữ liệu, cơ sở dữ liệu, v.v.). Hy vọng bài viết sẽ giúp ích cho quá trình chuẩn bị phỏng vấn của bạn.
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자
투잡뛰는 개발 노동자

April 3, 2024