< 재귀함수 (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 |