Java Recursion

Java Recursion: Định Nghĩa và Cú Pháp

Recursion (đệ quy) là một khái niệm trong lập trình, trong đó một hàm gọi chính mình để giải quyết một vấn đề. Đệ quy thường được sử dụng để giải quyết các bài toán có cấu trúc lặp lại, cho phép chúng ta viết mã ngắn gọn và dễ hiểu hơn. Để một hàm đệ quy hoạt động chính xác, nó cần hai thành phần chính: điều kiện dừng và khởi tạo (hoặc trường hợp cơ sở).

Cú Pháp Của Hàm Đệ Quy

Cú pháp chung của một hàm đệ quy trong Java có thể được mô tả như sau:

returnType functionName(parameters) {
    // Điều kiện dừng
    if (base_condition) {
        return base_value;
    }
    // Phần gọi đệ quy
    return functionName(modified_parameters);
}

Ví Dụ Về Hàm Tính Giai Thừa

Giai thừa của một số nguyên n (ký hiệu là n!) được định nghĩa là tích của tất cả các số nguyên dương từ 1 đến n. Ví dụ: 5! = 5 × 4 × 3 × 2 × 1 = 120. Dưới đây là một ví dụ về hàm tính giai thừa sử dụng đệ quy:

public class Factorial {
    public static int factorial(int n) {
        // Điều kiện dừng
        if (n == 0) {
            return 1; // Giai thừa của 0 là 1
        }
        // Gọi đệ quy
        return n * factorial(n - 1);
    }

    public static void main(String[] args) {
        int number = 5;
        int result = factorial(number);
        System.out.println("Giai thừa của " + number + " là: " + result);
    }
}

Ví Dụ Về Hàm Tính Dãy Fibonacci

Dãy Fibonacci là một dãy số trong đó mỗi số là tổng của hai số trước đó. Dãy này bắt đầu bằng 0, 1, 1, 2, 3, 5, 8, 13, ... Dưới đây là một ví dụ về hàm tính số Fibonacci:

public class Fibonacci {
    public static int fibonacci(int n) {
        // Điều kiện dừng
        if (n <= 1) {
            return n;
        }
        // Gọi đệ quy
        return fibonacci(n - 1) + fibonacci(n - 2);
    }

    public static void main(String[] args) {
        int index = 6;
        int result = fibonacci(index);
        System.out.println("Số Fibonacci thứ " + index + " là: " + result);
    }
}

Kết Luận

Đệ quy là một kỹ thuật mạnh mẽ trong lập trình, giúp chúng ta giải quyết các vấn đề phức tạp một cách dễ dàng. Tuy nhiên, khi sử dụng đệ quy, cần chú ý đến các điều kiện dừng để tránh vòng lặp vô hạn, và có thể kiểm soát việc tiêu tốn bộ nhớ thông qua đệ quy sâu. Nắm vững khái niệm đệ quy sẽ giúp bạn trở thành một lập trình viên giỏi hơn trong ngôn ngữ Java cũng như các ngôn ngữ lập trình khác.