CodeGym /Blog Java /Ngẫu nhiên /Đệ quy Java

Đệ quy Java

Xuất bản trong nhóm

Đệ quy Java là gì?

Kịch bản trong đó một hàm hoặc phương thức gọi chính nó được gọi là đệ quy và hàm hoặc phương thức đó được gọi là hàm đệ quy hoặc phương thức đệ quy. Cách tiếp cận này luôn được sử dụng để chia các vấn đề phức tạp thành một vấn đề đơn giản và dễ viết hơn. Một ví dụ đơn giản là đặt hai tấm gương đối diện nhau và chúng sẽ bắt đầu phản chiếu lẫn nhau theo cách đệ quy mà bạn có thể dễ dàng nhìn thấy.

Đệ quy gián tiếp

Ví dụ trên thể hiện phép đệ quy gián tiếp , tức là hàm một gọi hàm hai và hàm hai gọi hàm một.

Đệ quy trực tiếp

Khi một phương thức gọi đi gọi lại chính nó, nó được gọi là đệ quy trực tiếp .

Tình trạng tạm dừng

Bây giờ bạn sẽ nghĩ nếu một phương thức tự gọi đi gọi lại thì chắc chắn nó sẽ gặp lỗi Stack Overflow . Vâng, bạn nói đúng, giống như vòng lặp vô hạn, nó có thể chuyển thành đệ quy vô hạn. Chúng ta phải cung cấp một điều kiện cơ bản hoặc một điều kiện kết thúc để dừng đệ quy vô hạn này, được gọi là điều kiện dừng và điều kiện này luôn được cung cấp bên trong phương thức đệ quy mà chúng ta sẽ xem chi tiết trong ví dụ bên dưới.

Ví dụ đệ quy


class Recursion {

    static int factorial( int n ) {
        // base condition or termination condition
        if (n != 0)  
        // here we are calling the recursive method
            return n * factorial(n-1); 
        else
            return 1;
    }

    public static void main(String[] args) {
        // initializing the variables
        int number = 5, result;
        result = factorial(number);
        System.out.println(number + " factorial = " + result);
        
        // changing the value from 5 to 10
        number = 10;
        result = factorial(number); // recursive function call
        System.out.println(number + " factorial = " + result);
    }
}

Đầu ra ví dụ

5 giai thừa = 120 10 giai thừa = 3628800
Trong ví dụ về phương thức đệ quy này, chúng ta có một hàm giai thừa được gọi từ phương thức chính. Chúng ta đã chuyển giá trị 5 để xem giai thừa của nó là bao nhiêu, tức là 120. Hàm giai thừa này đang tự gọi lại chính nó bằng cách chuyển giá trị 4, hàm này lại gọi và chuyển giá trị 3, v.v., cho đến khi điều kiện dừng là met, tức là giá trị 0. Điều tương tự cũng xảy ra khi chúng ta thay đổi giá trị từ 5 thành 10.

Ưu điểm và nhược điểm của đệ quy

Mã đệ quy rất dễ viết, gỡ lỗi và bảo trì, giúp tiết kiệm thời gian. Nhưng mặt khác, với mỗi lệnh gọi, bộ nhớ sẽ bị tiêu tốn cho các biến và do đó chúng ta có thể hết bộ nhớ.

Phần kết luận

Chúng tôi hy vọng bạn hiểu đệ quy Java và cách triển khai nó cũng như những ưu điểm và nhược điểm của nó. Hãy thoải mái thực hành và quay lại bất cứ khi nào bạn cần thêm trợ giúp. Chúc bạn học tập vui vẻ!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION