자바 재귀란 무엇입니까?

함수나 메서드가 자신을 호출하는 시나리오를 재귀라고 하며 이러한 함수나 메서드를 재귀 함수 또는 재귀 메서드라고 합니다. 이 접근 방식은 항상 복잡한 문제를 간단하고 작성하기 쉬운 문제로 나누는 데 사용됩니다. 간단한 예는 두 개의 거울을 서로 앞에 배치하는 것입니다. 그러면 거울이 서로를 재귀적으로 반사하기 시작하므로 쉽게 볼 수 있습니다.

간접 재귀

위의 예는 간접 재귀 , 즉 함수 1이 함수 2를 호출하고 함수 2가 함수 1을 호출하는 것을 나타냅니다.

직접 재귀

메소드가 자신을 계속해서 호출하는 것을 직접 재귀 라고 합니다 .

정지상태

이제 메소드가 자신을 계속해서 호출하면 스택 오버플로 오류가 발생하게 될 것이라고 생각하게 될 것입니다 . 예, 맞습니다. 무한 루프처럼 무한 재귀가 발생할 수 있습니다. 이러한 무한 재귀를 멈추기 위해서는 기본 조건이나 종료 조건을 제공해야 하는데, 이를 정지 조건이라고 하며, 이 조건은 항상 recurse 메서드 내부에 제공되는데, 이에 대해서는 아래 예제에서 자세히 살펴 보겠습니다 .

재귀 예제


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);
    }
}

예제 출력

5 계승 = 120 10 계승 = 3628800
이 재귀 메서드 예제에는 기본 메서드에서 호출된 계승 함수가 있습니다. 우리는 팩토리얼이 무엇인지 확인하기 위해 값 5를 전달했는데, 즉 120입니다. 이 팩토리얼 함수는 값 4를 전달하여 자신을 다시 호출하고, 이 함수는 다시 호출하고 값 3을 전달하는 식으로 정지 조건이 다음과 같이 될 때까지 계속됩니다. met는 0의 값입니다. 값을 5에서 10으로 변경한 경우에도 마찬가지입니다.

재귀의 장점과 단점

재귀 코드는 작성, 디버그, 유지 관리가 간단하여 시간이 절약됩니다. 그러나 반면에 호출할 때마다 변수에 대한 메모리가 소비되고 이로 인해 메모리가 부족해질 수 있습니다.

결론

Java 재귀와 이를 구현하는 방법, 장점과 단점을 이해하시기 바랍니다. 자유롭게 연습하고 도움이 더 필요할 때마다 다시 방문하세요. 즐거운 학습!