Trong hướng dẫn này, bạn sẽ tìm hiểu về hàm đệ quy Java, ưu điểm và nhược điểm của nó.
Trong Java, một phương thức gọi chính nó được gọi là một phương thức đệ quy. Và, quá trình này được gọi là đệ quy.
Một ví dụ về thế giới vật chất là đặt hai gương song song đối diện nhau. Bất kỳ đối tượng nào ở giữa chúng sẽ được phản ánh một cách đệ quy.
Đệ quy hoạt động như thế nào?

Trong ví dụ trên, chúng ta đã gọi recurse()
phương thức từ bên trong main
phương thức. (gọi phương thức bình thường). Và, bên trong phương thức recurse (), chúng ta lại gọi cùng một phương thức đệ quy. Đây là một cuộc gọi đệ quy.
Để dừng cuộc gọi đệ quy, chúng ta cần cung cấp một số điều kiện bên trong phương thức. Nếu không, phương thức sẽ được gọi là vô hạn.
Do đó, chúng ta sử dụng câu lệnh if… else (hoặc cách tiếp cận tương tự) để kết thúc lệnh gọi đệ quy bên trong phương thức.
Ví dụ: Giai thừa của một số sử dụng đệ quy
class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )
Đầu ra :
4 giai thừa = 24
Trong ví dụ trên, chúng ta có một phương thức được đặt tên factorial()
. Các factorial()
được gọi từ các main()
phương pháp. với biến số được truyền dưới dạng đối số.
Ở đây, hãy lưu ý tuyên bố,
return n * factorial(n-1);
Các factorial()
phương pháp được gọi riêng của mình. Ban đầu, giá trị của n là 4 bên trong factorial()
. Trong lần gọi đệ quy tiếp theo, 3 được chuyển cho factorial()
phương thức. Quá trình này tiếp tục cho đến khi n bằng 0.
Khi n bằng 0, if
câu lệnh trả về false do đó 1 được trả về. Cuối cùng, kết quả tích lũy được chuyển đến main()
phương thức.
Hoạt động của Chương trình Giai thừa
Hình ảnh dưới đây sẽ cung cấp cho bạn một ý tưởng tốt hơn về cách chương trình giai thừa được thực hiện bằng cách sử dụng đệ quy.

Ưu điểm và nhược điểm của đệ quy
Khi một cuộc gọi đệ quy được thực hiện, các vị trí lưu trữ mới cho các biến sẽ được cấp phát trên ngăn xếp. Khi mỗi cuộc gọi đệ quy trả về, các biến và tham số cũ bị xóa khỏi ngăn xếp. Do đó, đệ quy thường sử dụng nhiều bộ nhớ hơn và nói chung là chậm.
Mặt khác, một giải pháp đệ quy đơn giản hơn nhiều và tốn ít thời gian hơn để viết, gỡ lỗi và bảo trì.
Khuyến nghị đọc: Ưu điểm và nhược điểm của đệ quy là gì?