Skip to main content

Cuộc gọi đệ quy là gì?

Trong lập trình, một cuộc gọi đệ quy là một lệnh trong một chương trình con hoặc chức năng cho chương trình chạy cùng một chương trình con một lần nữa.Hiệu suất lặp lại có thể là kết quả trực tiếp của hàm hoặc hàm thứ hai có thể được kích hoạt rằng, lần lượt, đề cập đến chức năng thứ nhất.Một cuộc gọi đệ quy có một số điểm tương đồng với vòng lặp vô hạn đáng sợ, nhưng chương trình con luôn có một tuyên bố có điều kiện cho thấy chương trình khi ngừng lặp lại đệ quy. Khái niệm về đệ quy có lẽ được minh họa rõ nhất thông qua việc sử dụng một ví dụ.Giả sử một thợ lợp mái đang áp dụng bệnh zona mới cho một ngôi nhà.Để bắt đầu, anh ta phải mang theo một bó bệnh zona lên mái nhà.Khi anh ta đóng gói bó đầu tiên tại chỗ, anh ta phải trèo xuống thang, lấy một bó khác và đóng đinh nó tại chỗ.Quá trình này tiếp tục như một loạt các Go, Fetch, trở lại cho đến khi Shingle cuối cùng được áp dụng.Tại thời điểm đó, thợ lợp có thể tự do chuyển sang công việc tiếp theo hoặc về nhà. Mặc dù ví dụ này là một sự đơn giản hóa, nhưng nó chứa tất cả các yếu tố của một cuộc gọi đệ quy.Có một điểm khởi đầu, thợ lợp phải lấy những gì anh ta cần, trở về từ đầu và, khi điều kiện cuối cùng được đáp ứng, dừng lại.Đây về cơ bản là những gì chương trình làm;Nó bắt đầu, thực hiện một hành động, quay trở lại chính nó và chấm dứt khi điều kiện kết thúc xảy ra.

Điều kiện kết thúc được gọi là trường hợp cơ sở.Nó là điều cần thiết cho tất cả các cuộc gọi đệ quy;Không có nó, chức năng sẽ tiếp tục lặp lại.Tốt nhất, điều này dẫn đến việc rút cạn tài nguyên bộ nhớ hệ thống.Thông thường quá tải sẽ làm hỏng chương trình tại một số điểm, nhưng vào thời điểm vấn đề được phát hiện, thiệt hại đáng kể có thể được thực hiện. Các lập trình viên có kinh nghiệm có thể nhận ra sự giống nhau giữa một cuộc gọi đệ quy và A cho hoặc trong khi vòng lặp.Ví dụ, nếu mục tiêu là tìm tổng số lượng hàng tồn kho của tất cả các cổ phiếu với số phần lớn hơn 999, một vòng lặp cho chương trình định vị tất cả các trường hợp đủ điều kiện và vòng lặp trong thời gian chỉ báo cho chương trình thực hiện vòng lặp trong khi đã nêuđiều kiện là hợp lệ.Một cuộc gọi đệ quy có thể được cho là kết hợp một số tính năng của các vòng lặp này với một câu lệnh if-then-else;Nếu điều kiện này là đúng, thì hãy làm điều này, hoặc nếu không làm điều gì đó khác biệt nếu điều kiện là sai.Tuy nhiên, đệ quy thường cho phép mã nhỏ gọn hơn và cho phép vấn đề được chuyển đến hàm gần điểm cần thiết hơn.