Skip to main content

Đệ quy đuôi là gì?

Đuôi đệ quy là một loại cuộc gọi phương thức lập trình trong đó một phương thức tự gọi, sau đó trả về giá trị của cuộc gọi thứ hai đó.Nói cách khác, đệ quy đuôi xảy ra khi câu lệnh cuối cùng bên trong một phương thức là một cuộc gọi khác cho cùng một phương thức đó.Các tham số trong lệnh gọi phương thức thứ hai thường khác với các tham số đầu tiên, nhưng điều này là không bắt buộc.Để đệ quy này hoạt động, phương thức được gọi trong chính nó phải trả về một giá trị cụ thể, chẳng hạn như một số, chuỗi hoặc một số đối tượng khác.Các phương thức void, không trả về một giá trị, không hoạt động tốt cho đệ quy. Yêu cầu rằng một cuộc gọi đệ quy phải là câu lệnh cuối cùng trong phương thức gọi của nó không nhất thiết có nghĩa là cuộc gọi đệ quy là dòng cuối cùng trong phương thức.Một cuộc gọi đệ quy đuôi thích hợp cũng có thể được tìm thấy bên trong một cấu trúc điều khiển, có nghĩa là, trong mã nguồn, cấu trúc điều khiển có thể kết thúc phương thức chứ không phải là cuộc gọi.Sự khác biệt quan trọng trong trường hợp này là cấu trúc điều khiển không phải là một tuyên bố lập trình, mà là một phần tích hợp của ngôn ngữ máy tính.

Đuôi sau tồn tại trong nhiều ngôn ngữ máy tính, bao gồm Java và C ++.Thông thường, các cuộc gọi đệ quy này có thể được viết lại bằng các phương tiện khác, chẳng hạn như cho các vòng lặp, trong khi các vòng lặp hoặc câu lệnh GOTO.Tiện ích của đệ quy được tìm thấy khi tạo ra nhiều cuộc gọi tuần tự cho cùng một phương thức.Đệ quy thường là cách sạch nhất và dễ nhất để hoàn thành các nhiệm vụ lặp đi lặp lại.

Một ví dụ phổ biến về đệ quy đuôi là một phương pháp tính toán giai thừa của một số.Quá trình này là lý tưởng bởi vì, bắt đầu từ bất kỳ số nào, mỗi số trước khi nó được nhân với nhau.Vì vậy, để tìm thấy giai thừa của 5, quá trình thích hợp để làm điều đó sẽ là nhân 5*4*3*2*1.Việc đệ quy xuất hiện do cách cấu trúc phương thức giai thừa: nếu giai thừa là 1, return 1, nếu không, hãy trả lại giai thừa của số được đưa ra cho phương thức trừ đi.Phương pháp này cũng hữu ích vì nó có thể được viết tương đương bằng cách sử dụng một trong hai loại đệ quy đuôi, có hoặc không có câu lệnh điều khiển xung quanh cuộc gọi phương thức cuối cùng.

Đuôi sau chỉ là một ví dụ về nhiều loại đệ quy.Khái niệm trong tất cả các loại đệ quy về cơ bản là giống nhau, trong một số thời trang, một phương pháp tự gọi.Trong số các loại này, sự khác biệt của đệ quy đuôi là giá trị của một cuộc gọi đệ quy ngay lập tức được trả lại và không có gì khác xảy ra trong phương thức gọi sau cuộc gọi đó.