재귀함수
재귀(再歸) : 원래의 자리로 되돌아가거나 되돌아옴.
재귀는 위 이미지와 같이 계속 원 상태로 돌아오는, 거울속의 거울과도 비슷한 느낌이다.
재귀함수의 장점
- 여러 반복문을 사용하지 않아 코드가 간결해짐.
- 변수를 여러개 사용할 필요가 없음.
재귀함수의 단점
- 코드를 직관적으로 파악하기 어려움.
- 반복하여 메서드를 호출하므로 지역변수,매개변수,반환값을 모두 process stack에 저장. 메모리 과다 사용.
- 메서드 호출 종료 후 복귀를 워한 컨텍스트 스위칭 비용 발생.
컨텍스트 스위칭 (Context Switching)
프로세스1과 프로세스2가 존재할 때, 프로세스1이 CPU를 점유중이고 프로세스2가 대기상태이다가 얼마 후 프로세스2가 실행되고 프호세스1이 대기상태가 되는데, 이때 프로세스1이 작업하던 내용들을 PCB에 저장하고 프로세스2가 갖고있던 데이터는 PCB에서 가져온다.
이 과정, 즉 프로세스1과 프로세스2가 서로 번갈아가며 대기와 실행을 반복하는 것을 컨텍스트스위칭이라고 한다.
재귀함수 사용 조건
- 문제 크기를 점점 더 작은 단위로 쪼갤 수 있어야함.
- 재귀호출이 종료되는 시점 존재.