ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 재귀 알고리즘 분석 [자바]
    Algorithms 2022. 2. 7. 22:10

    재귀란?

     

    자신을 정의할 때 자기 자신을 재참조하는 방법이다.


    알고리즘을 작성할 때 재귀를 이용하여 복잡한 로직을 쉽게 구현할 수 있다.

     

    이렇게 정의한 경우 재귀적(recursive)이라고 한다.

     

    팩토리얼

    재귀의 예로 가장 많이 소개되는 팩토리얼이다.

     

    public int factorial(int n){
    	if(n > 0){
        	return n * factorial(n-1);
        }else{
        	return 1;
        }
    }

     

    위와 같이 factorial 함수를 정의할 때 자기 자신을 재참조하여 작성할 수 있다.


    재귀 호출

    위 factorial 함수에 3을 대입하여 예시 코드가 어떻게 호출되는지 확인해 보자.

     

             n = 3
               ↓
    factorial(3) 호출
      ↓
    if( 3 > 0 ) return 3 * factorial( 3 - 1 );
        ↙ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ↙                                  
    if( 2 > 0 ) return 2 * factorial( 2 - 1 );
        ↙ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ↙
    if( 1 > 0) return 1 * factorial( 1 - 1);
        ↙ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ↙
    if( 0 > 0){ 
    }else {
        return 1; <- 1 을 리턴하게 된다.
    }

    return 된 1은 factorial( 1 - 1 )을 결과로 출력된다

    결과적으로

    return 1 * 1 -> return 2 * 1 * 1 -> return 3 * 2 * 1 * 1 로 출력되어

    3! 인 3 * 2 * 1 = 6이 된다.

     

    DFS를 구현할 때 기본적으로 Stack을 사용하는데 재귀를 이용해서도 구현할 수 있다.


    참조

    Do it! 자료구조와 함께 배우는 알고리즘 입문

    재귀

    반응형

    댓글

Designed by Tistory.