C언어 기본

재귀함수

홍박스 2021. 7. 13. 18:06
728x90

함수 안에서 자기 자신을 호출하는 함수

 

메모리에 스택 영역이 있다.

스택영역의 특징은 호출된 함수 중 가장 나중에 호출된 함수가 먼저 종료되고 먼저 호출된 함수가 나중에 종료된다 이다.

 

그럼 프로그램이 실행되면 메인 함수가 먼저 실행되고, 그 후 함수들이 스택영역에 올라간다.

그리고 나중에 실행된 함수들이 먼저 종료되고 사라진다.

 

그럼 재귀함수는

함수안에서 또 자기함수를 호출하는것이다.

그럼

함수1
...
함수1
함수1
메인

이렇게 된다. 

하지만 이렇게 진행 되다가 스택메모리 영역의 한계가 되면 스택오버플로우가 발생한다.

 

그럼으로 결과적으로 재귀함수는 함수를 빠져나갈 방법이 필요하다는 것이 중요하다.

 

그럼 재귀함수는 언제 쓰이는 것인가?

가독성이 좋고 구현하기 쉬운 함수이다. 그래서 반복문을 사용하는 것보다 재귀함수가 사용하기 편하다.

 

반복문과 재귀함수 비교1
반복문과 재귀함수 비교2

728x90