Trong nhiều ngôn ngữ chức năng sử dụng đệ quy được coi là một thực hành tốt. Tôi nghĩ rằng nó là tốt vì cách trình biên dịch tối ưu hóa mã ngôn ngữ chức năng.Trong C# là một thực hành tốt để sử dụng các hàm đệ quy trong các thuật toán?
Nhưng thực hành tốt có nên sử dụng đệ quy trong C# khi tạo thuật toán không? Có đúng khi nói về C#, thuật toán đệ quy sẽ dẫn đến chồng của bạn tăng lên đáng kể (nếu số lượng cuộc gọi là rất lớn) và điều này sẽ không nhanh chút nào và có thể dẫn đến tràn ngăn xếp. Hoặc cũng có một số tối ưu hóa xảy ra để làm cho chức năng đệ quy hiệu quả?
Tôi sẽ đánh giá cao nếu bạn đưa ra một số so sánh (tốc độ, bộ nhớ, khả năng đọc) giữa các thuật toán sử dụng đệ quy trong các ngôn ngữ hàm và C#.
Ít nhất, hãy sử dụng tính năng đệ quy khi có ý nghĩa (và bạn có thể, tức là khi nó không dẫn đến tràn ngăn xếp) - ví dụ: để duyệt qua cây và cho các thuật toán trở nên rất xấu/phức tạp khi được chuyển đổi thành lặp lại. – delnan
http://stackoverflow.com/questions/491376/why-doesnt-net-c-eliminate-tail-recursion –