Sự đệ quy về bản chất không tốt hơn hoặc tệ hơn các vòng lặp - mỗi cái đều có ưu điểm và nhược điểm, và những thứ thậm chí còn phụ thuộc vào ngôn ngữ lập trình (và cách thực hiện).
Về mặt kỹ thuật, các vòng lặp phù hợp với các hệ thống máy tính điển hình tốt hơn ở cấp độ phần cứng: ở cấp mã máy, một vòng lặp chỉ là một thử nghiệm và một bước nhảy có điều kiện, trong khi đệ quy (được thực hiện một cách ngây thơ) liên quan đến việc đẩy khung stack, nhảy, quay lại và bật lại từ ngăn xếp. OTOH, nhiều trường hợp đệ quy (đặc biệt là các trường hợp tương đương tầm thường với các vòng lặp) có thể được viết để có thể tránh được việc đẩy / bật ngăn xếp; điều này có thể xảy ra khi lệnh gọi hàm đệ quy là điều cuối cùng xảy ra trong thân hàm trước khi quay trở lại và nó thường được gọi là tối ưu hóa cuộc gọi đuôi (hoặc tối ưu hóa đệ quy đuôi ). Hàm đệ quy được tối ưu hóa cho cuộc gọi đúng đuôi hầu hết tương đương với một vòng lặp ở cấp mã máy.
Một xem xét khác là các vòng lặp yêu cầu cập nhật trạng thái phá hủy, khiến chúng không tương thích với ngữ nghĩa ngôn ngữ thuần túy (không có tác dụng phụ). Đây là lý do tại sao các ngôn ngữ thuần túy như Haskell hoàn toàn không có cấu trúc vòng lặp và nhiều ngôn ngữ lập trình chức năng khác thiếu chúng hoàn toàn hoặc tránh chúng càng nhiều càng tốt.
Tuy nhiên, lý do tại sao những câu hỏi này xuất hiện rất nhiều trong các cuộc phỏng vấn là vì để trả lời chúng, bạn cần có sự hiểu biết thấu đáo về nhiều khái niệm lập trình quan trọng - biến, gọi hàm, phạm vi, và tất nhiên là vòng lặp và đệ quy - và bạn có để mang lại sự linh hoạt về mặt tinh thần cho phép bạn tiếp cận một vấn đề từ hai góc độ hoàn toàn khác nhau và di chuyển giữa các biểu hiện khác nhau của cùng một khái niệm.
Kinh nghiệm và nghiên cứu cho thấy rằng có một ranh giới giữa những người có khả năng hiểu các biến, con trỏ và đệ quy và những người không. Hầu hết mọi thứ khác trong lập trình, bao gồm khung, API, ngôn ngữ lập trình và các trường hợp cạnh của chúng, có thể có được thông qua nghiên cứu và trải nghiệm, nhưng nếu bạn không thể phát triển trực giác cho ba khái niệm cốt lõi này, bạn không thể trở thành lập trình viên. Chuyển một vòng lặp đơn giản thành phiên bản đệ quy là cách nhanh nhất để lọc ra những người không lập trình - ngay cả một lập trình viên khá thiếu kinh nghiệm thường có thể làm điều đó trong 15 phút, và đó là một vấn đề rất khó hiểu về ngôn ngữ, vì vậy ứng viên có thể chọn một ngôn ngữ của sự lựa chọn của họ thay vì vấp phải sự bình dị.
Nếu bạn nhận được một câu hỏi như thế này trong một cuộc phỏng vấn, đó là một dấu hiệu tốt: điều đó có nghĩa là nhà tuyển dụng tiềm năng đang tìm kiếm những người có thể lập trình chứ không phải những người đã ghi nhớ hướng dẫn sử dụng công cụ lập trình.