thể trùng lặp:
Is recursion ever faster than looping?Chi phí đệ quy - mức độ nghiêm trọng của nó?
Tôi được đào tạo đầu tiên cho chương trình nghiêm túc trong C, khoảng 15 năm trước đây. Chủ nhân của tôi muốn mã được tối ưu hóa cao cho các nhiệm vụ khó tính toán. Tôi nhớ được khuyên nhiều hơn một lần để viết lại các cuộc tham khảo như vòng lặp, ngay cả ở mức đắt tiền dễ đọc, để tránh "phí trên mặt đệ quy". Khi tôi hiểu nó sau đó, đệ quy trên không là nỗ lực thêm cần thiết để đẩy dữ liệu vào một ngăn xếp và sau đó bật nó đi.
Bây giờ tôi viết mã bằng C, Python, Perl, và đôi khi Java, và tôi tự hỏi đôi khi về việc thu thập. Vẫn còn một thứ gì đó để đạt được bằng cách viết lại chúng? Điều gì sẽ xảy ra nếu họ đang theo đuôi? Có trình biên dịch hiện đại thực hiện tất cả những vấn đề này tranh luận? Các mối lo ngại đó có liên quan đến ngôn ngữ thông dịch không?
Chức năng gọi điện trên cao có thể thay đổi rất nhiều trên các hệ thống, vì vậy câu hỏi này chỉ có ý nghĩa trong một ngữ cảnh cụ thể. Điều đó nói rằng, tôi nghĩ rằng xu hướng chung trong vài thập kỷ qua đã hướng tới ít chi phí hơn. – dmckee