본문 바로가기
프로그래밍/C

재귀함수

by leestun 2020. 7. 24.
반응형

[재귀함수]

함수가 함수내에서 자기 자신을 포출하는 구조

<구조>
리턴타입 함수명() {
명령;
명령;
함수명();
}

- 재귀함수는 무한반복처럼 계속해서 자기 자신을 호출한다.
- 무한반복은 계속해서 반복되면 정상적으로 실행되지 않으므로, 종료 조건과 함께 사용하자.
- 재귀함수도 계속해서 자신을 호출하면 정상적으로 실행되지 않으므로, 종료조건과 함계 사용하자.
- 함수 호출 시 변화량을 줄 때는, 함수에 전달할 값의 증감이 후위형으로 전달되면 안된다.

-재귀함수 작성시, 항상 함수 호출을 종료할 수 있는 조건을 사용
if(호출종료조건) {
return;
}

-----------------------------------------------------------------

<실습>재귀함수.c
재귀함수를 사용해서 다음과 같은 출력결과

void f(int x) {
if (x == 11) {
return; //함수 종료
}
printf("%d\n", x);
f(++x);
}



[출력결과]
1
2
3
4
5
6
7
8
9
10

-------------------------------------------------------------------
f2(x)
x에 전달하는 숫자만큼 1~x까지의 합을 출력

int f2(int x) {
if (x == 1) {
return 1;
}
else {
return x + f2(x - 1);
}

}


-----------------------------------------------------------------
[팩토리얼]

fact(5) = 5*fact(4)
fact(4) = 4*fact(3)
fact(3) = 3*fact(2)
fact(2) = 2*fact(1)
fact(1) = 1


int fact(int x) {
if (x == 1) {
return 1;
}
else {
return x * fact(x-1);
}
}

반응형

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

배열  (0) 2020.07.25
변수의종류  (0) 2020.07.24
함수  (0) 2020.07.22
반복문(2)  (0) 2020.07.21
제어문-반복문  (0) 2020.07.21