티스토리 뷰

안녕하세요 감자코딩에 감자개발자 입니다.


이번에는 제가 DFS공부하기에 앞서, Recursive call(재귀적 함수 호출)에 대해서 알아보겠습니다.


가장 기본적인 예제로 돌아가는 Recursive에 대한 예를 하나 설명하겠습니다.




//

//  recursive_call_exam.cpp

//  Algorigm_Study

//

//  Created by kgh on 2018. 8. 6..

//  Copyright © 2018년 kgh. All rights reserved.

//


#include <stdio.h>

#include <iostream>

using namespace std;


int Recursive(int num){

    

    if(num == 1 ){

        return 1;

    }else{

        return num + Recursive(num - 1);

    }


}

int main(void){

    

    int num = Recursive(3);

    cout << num << endl;

    

}



결과는 어떻게 나올까요?


6

Program ended with exit code: 0


이렇게 결과가 나올것이라는 생각을 하셨었나요~?




그러면 Recursive 호출에 대한 자세한 로직에 대해서 설명 드리겠습니다.





이런식으로 호출이 되는원리를 생각해내셨나요? 그러면 정확하게 잘 파악하신것입니다.


간략하게 설명을 해보겠습니다.



1. Recursive(3) 을 호출하면서 Return 값으로 3+ Recursive(2)를 반환하려고 할때, 이때 다시 Recursive(2)를 호출하게 됩니다.


2. Recursive(2) 를 호출하면서 Return값으로 2+Recursive(1)을 반환하려고 합니다. 이때 다시 Recursive(1)을 호출하게 되면서 조건문에 if(num == 1)일경우 return 을 1로 하게됩니다.


3.따라서, 최종적으로  3 + 2 + 1 의 값이 계산되어지게 되며 Recursive(3) + Recursive(2) + Recursive(1)의 값들이 하나씩 중첩되어 계산되면서 최종적인 값이 Return 되어지게됩니다.


이렇게 간단하게 Recursive 재귀적 호출에 대한 간단한 예제로 살펴보았습니다. 이것을 바탕으로해서 DFS를 구현해보려고합니다. 다음 강의에는 DFS에 대한 강의가 예정되어있습니다. 감사합니다.



공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함