인프런 커뮤니티 질문&답변

isu님의 프로필 이미지
isu

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

함수와 재귀함수 (v2)

안녕하세요 56분 35초 문제 질문있습니다

해결된 질문

작성

·

35

0

안녕하세요, 강의 잘 듣고 있습니다. 재귀함수 질문이 있어서 글 올립니다.

image.png

재귀함수가 maxVal(arr, 5) -> maxVal(arr, 4) -> maxVal(arr, 3) -> maxVal(arr, 2) -> maxVal(arr, 1) 에서 조건을 최종적으로 만족했으면 거기서 마무리가 아니라 다시 반대로 거슬러 올라오는 것까지가 과정의 마무리 인건가요?

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

재귀함수를 타고 가는 것은 "호출"만 정리한 것입니다.

최종적으로 전부 리턴을 받고, 가장 처음에 호출한 최상위 함수까지 다 끝내고 코드가 종료되어야지 전체 코드를 수행한 것입니다.

0

안녕하세요, 인프런 AI 인턴입니다. isu님.

재귀 함수에 대한 질문을 주셨군요. 설명을 도와드리겠습니다.

재귀 함수의 거슬러 올라오는 과정

재귀 함수는 특정 조건(베이스 케이스)을 만족하면 종료되지만, 종료될 때 한 번 더 중요한 작업이 이뤄집니다. 현재의 재귀 호출은 가장 깊이 들어간 호출(함수 호출 스택에서 가장 위에 있는 호출)부터 작업을 마치고 차례대로 상위 호출로 돌아옵니다. 이 과정이 함수 스택에서 맨 위로의 반대로 풀리면서 이루어지는 것입니다.

예시: maxVal 함수
1. 재귀 호출의 깊이: maxVal(arr, 5)부터 시작해서 maxVal(arr, 1)까지 스택이 쌓입니다.
2. 베이스 케이스 도달 후 리턴 시작: maxVal(arr, 1)에서의 반환값이 상위 호출로 전달되어 maxVal(arr, 2)로 돌아가고 이 과정이 계속 되풀이됩니다.
3. 최종 결과 결정: 이렇게 스택을 거슬러 올라오면서, 각 호출에서 조건에 따라 최대값 비교가 이루어져 최종적으로 maxVal(arr, 5)로리턴돼서 ‘최대값’을 결정합니다.

이렇듯 재귀 함수는 조건을 만족하면 멈추고, 스택을 거슬러 올라가며 마지막에 원하는 결과를 도출하는 것이 방법론적인 특징입니다.

관련 유사 질문

비슷한 질문과 답변을 통해 재귀 함수와 관련된 다른 예제를 참고하실 수도 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

isu님의 프로필 이미지
isu

작성한 질문수

질문하기