Tôi thích để xác định trình tự đệ quy như sau:Làm đệ quy đệ quy bộ nhớ rò rỉ?
let rec startFrom x =
seq {
yield x;
yield! startFrom (x + 1)
}
Tôi không chắc chắn nếu chuỗi đệ quy như thế này nên được sử dụng trong thực tế. yield!
xuất hiện là đuôi đệ quy, nhưng tôi không chắc chắn 100% kể từ khi được gọi từ bên trong một IEnumerable khác. Theo quan điểm của tôi, mã tạo ra một thể hiện của IEnumerable trên mỗi cuộc gọi mà không đóng nó, điều này thực sự sẽ làm cho chức năng này bị rò rỉ bộ nhớ.
Chức năng này có bị rò rỉ bộ nhớ không? Cho rằng vấn đề là nó thậm chí "đuôi đệ quy"?
[Chỉnh sửa để thêm]: Tôi đang dò dẫm xung quanh với NProf cho câu trả lời, nhưng tôi nghĩ sẽ rất hữu ích khi nhận được giải thích kỹ thuật về việc triển khai chuỗi đệ quy trên SO.
>> "Thật không may, tôi không có kinh nghiệm sâu sắc, vì vậy tôi có thể 't tìm ra câu trả lời của riêng tôi. " Một số loại trò đùa? Làm sao người ta có được kinh nghiệm? – user79755
Đối với hồ sơ tôi đang xem NProf ngay bây giờ, nhưng hy vọng sẽ nhận được câu trả lời nhanh hơn và giải thích kỹ thuật về SO. – Juliet