336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
1. 재귀 함수란?
- 자기 자신을 재호출하는 함수로 계속해서 자기 자신을 호출할 수 있기 때문에 반복 연산에 많이 사용된다.자기 자신을 무한정 호출할 수도 있기 때문에 조건문을 제대로 만들어 주지 않으면 오류가 발생하기 쉽지만 잘 사용하면 보기 쉬운 간략한 코드를 만들기도 한다.
예제코드 |
|
재귀 호출 결과값 |
|
2. 재귀 함수의 사용
그리고 절대 탈출 조건이 빠져서는 안된다. 재귀 함수는 반복문과 같은 형태를 띄기 때문에 탈출 조건이 없다는 것은 무한 루프에 빠지겠다는 것과 같다. 재귀 호출을 사용할 때는 항상 탈출 구문에 주의해야 한다.
3. 재귀 함수와 Stack Overflow
- 예제 코드에서는 보기 쉽게 10회면 함수를 호출하지만 실제 프로그램 안에서는 재귀함수의 호출이 얼마나 일어나게 될지 예상하기는 쉽지 않다. 대부분은 가변적으로 호출을 하기 때문에 10번이 아닌 1000번 10000번 될 수 있다. 만약 10만번을 호출한다는 가정하에 프로그램을 실행하면......
출력되는 에러 메세지를 볼 수 있다. 보면 결과값이1만이 되기도 전에 오류가 나는걸 볼 수 있는데 반복문을 사용해 1만번을 돌리면 에러가 발생하지는 않는다. 그렇다면 반복문과 재귀호출 둘의 차이점이 무엇일까. 바로 '함수를 호출한다'와 '호출하지 않는다'이다.
'프로그래밍 > C언어' 카테고리의 다른 글
[C언어] const 키워드 (0) | 2017.03.25 |
---|---|
[C언어] 지역변수와 전역변수 (0) | 2016.10.01 |
[C언어] printf 함수에 사용되는 특수문자, 서식문자 (0) | 2016.05.12 |
[C언어] scanf, scanf_s 함수 (0) | 2016.04.27 |
[C언어] rand, srand 함수 (0) | 2016.04.19 |