재귀 호출

  • 함수가 호출되면 함수가 호출된 장소를 가리키는 주소값이 시스템 내부의 스택에 저장됨
    (호출된 함수의 작업을 끝마치고 리턴될 때 되돌아갈 위치를 기억)
  • 재귀적으로 호출된 함수가 리턴될 때 함수를 호출했던 원래 자리로 되돌아와야 하는 이유
    • 원래 함수에서 재귀적으로 함수를 호출한 부분 다음에 다른 내용이 포함되어 있으면 그 내용을 계속해서 처리해야 하기 때문 
  • 내부 스택을 이용해서 함수가 호출된 지점을 정확하게 기억해야 하기 때문에 메모리의 사용이나 프로그램의 처리 속도 면에서 추가적인 부하가 있음


꼬리재귀

  • 성능과 간결함, 이 두가지 방법의 장점을 모두 취함
  • 원래 위치로 돌아갔을 때 할일이 남아있지 않기 때문에 함수가 호출된 위치를 기억해 둘 필요가 없음
  • 똑똑한 컴파일러는 꼬리재귀를 인식하여 최적화를 해줌

자세한 내용은 여기


+ Recent posts