[Java] 재귀함수 알고리즘

728x90

알고리즘 문제를 풀다보면 가끔 재귀함수 문제를 만나게 됩니다.

제 경험상 대부분을 재귀함수 문제들은 대부분 팩토리얼 관련된 문제로 접하였습니다.

 

재귀함수는 함수가 자기 자신을 호출하는 방법으로 동작을 합니다.

간단한 예제를 통해서 알아보도록 하겠습니다. 


1) 아래 예제가 간단한 팩토리얼 예제 입니다.

// 팩토리얼(재귀함수) 알고리즘
public class RecursiveFactorial {
    public static int factorial(int n) { //메인에있는 파라미터5를 입력 받음
    
        //재귀함수 알고리즘
        if (n <= 1) { 
            return 1;
        } else {
            return n * factorial(n - 1);
        }
    }

    public static void main(String[] args) {
        int number = 5;
        int result = factorial(number);
        System.out.println(number + "의 팩토리얼은 " + result + "입니다.");
    }
}

사실 이 알고리즘이 이해가 안가시면은 손으로 코드를 쳐가면서, 그림을 그려보면서

진행을하면은 하나하나 이해가 될 것 입니다. 

 

헷갈려하는 부분이 else에 return n * factorial(n-1) 이 부분인데 이 부분을 헷갈리지말고

피라미드를 그려보면서 하시면은 수월하게 문제를 풀 수 있을 것이라고 생각합니다.


1) factorial(5) = 5 * factorial(5-1) return 

        2) factorial(4) = 4 * factorial(4-1) return 

             3) factorial(4) = 3 * factorial(3-1) return   

                   4) factorial(4) = 3 * factorial(2-1) return   

                         5) factorial(1) = 1 return (조건만족 ->  1 return)


이런식으로 생각을 하면 편할 것 같습니다

 

728x90