본문 바로가기

프로그래밍/C++

C++ 문법 - 재귀함수

< 재귀함수 (recursion) >


재귀함수는 내부에서 자기 자신을 호출하는 함수를 의미합니다.

return을 만나 함수가 종료되기 전에 먼저 다시 호출된 함수를 실행하고 그 뒤에 첫 번째로 실행된 함수를 마저 실행합니다.


이를 이용해 다음과 같이 사용할 수 없습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
int test(int a)
{
    if (a == 0)
    {
        cout << "test 종료" << endl;
        return 0;
    }
    cout << a << endl;
    return test(a - 1);
}
 
int main()
{
    test(5);
    return 0;
}
cs



위의 재귀함수 작동 원리가 잘 이해되지 않는다면 다음의 예제를 보시기 바랍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
    for (int a = 5; ; a--)
    {
        if (a == 0)
        {
            cout << "test 종료" << endl;
            return 0;
        }
        cout << a << endl;
    }
    return 0;
}
cs


위의 재귀함수를 반복문으로 만들어봤습니다.

for 괄호 안의 2번 칸 '조건'이 비워져있다는 점(무한반복)을 유의해서 봐주세요.

'프로그래밍 > C++' 카테고리의 다른 글

C++ 문법 - 포인터  (0) 2018.01.28
C++ 문법 - 상수  (0) 2018.01.28
C++ 문법 - 오버로딩  (0) 2018.01.22
C++ 문법 - 상속 접근제어 변경  (0) 2018.01.22
C++ 문법 - 소멸자  (0) 2018.01.22