Tôi bắt đầu học ocaml, và tôi thực sự đánh giá cao sức mạnh của đệ quy trong ngôn ngữ. Tuy nhiên, một điều mà tôi lo lắng là ngăn xếp tràn.Các chương trình bằng các ngôn ngữ chức năng có nhiều khả năng có tràn ngăn xếp hơn không?
Nếu ocaml sử dụng ngăn xếp cho các cuộc gọi chức năng, cuối cùng nó sẽ không tràn ngăn xếp? Ví dụ: nếu tôi có chức năng sau:
let rec sum x =
if x > 1 then f(x - 1) + x
else x;;
nó cuối cùng phải gây ra tràn ngăn xếp. Nếu tôi đã làm điều tương đương trong c + + (sử dụng đệ quy), tôi biết rằng nó sẽ tràn.
Vì vậy, câu hỏi của tôi là, có được xây dựng trong các biện pháp bảo vệ để ngăn chặn các ngôn ngữ chức năng tràn tràn ngăn xếp không? Nếu không, chúng không ít hữu ích như thế này, vì thuật toán tổng hợp ở trên, được viết theo kiểu thủ tục với vòng lặp for, có thể xử lý bất kỳ số nào (tràn số nguyên không liên quan)?
hey! đó là tên của trang web. – kornfridge