프로그래밍/C++

C++ 문법 - 재귀함수

게으른구름 2018. 1. 28. 18:42

< 재귀함수 (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번 칸 '조건'이 비워져있다는 점(무한반복)을 유의해서 봐주세요.