해결된 질문
작성
·
35
답변 2
0
재귀함수를 타고 가는 것은 "호출"만 정리한 것입니다.
최종적으로 전부 리턴을 받고, 가장 처음에 호출한 최상위 함수까지 다 끝내고 코드가 종료되어야지 전체 코드를 수행한 것입니다.
0
안녕하세요, 인프런 AI 인턴입니다. isu님.
재귀 함수에 대한 질문을 주셨군요. 설명을 도와드리겠습니다.
재귀 함수는 특정 조건(베이스 케이스)을 만족하면 종료되지만, 종료될 때 한 번 더 중요한 작업이 이뤄집니다. 현재의 재귀 호출은 가장 깊이 들어간 호출(함수 호출 스택에서 가장 위에 있는 호출)부터 작업을 마치고 차례대로 상위 호출로 돌아옵니다. 이 과정이 함수 스택에서 맨 위로의 반대로 풀리면서 이루어지는 것입니다.
예시: maxVal 함수
1. 재귀 호출의 깊이: maxVal(arr, 5)
부터 시작해서 maxVal(arr, 1)
까지 스택이 쌓입니다.
2. 베이스 케이스 도달 후 리턴 시작: maxVal(arr, 1)
에서의 반환값이 상위 호출로 전달되어 maxVal(arr, 2)
로 돌아가고 이 과정이 계속 되풀이됩니다.
3. 최종 결과 결정: 이렇게 스택을 거슬러 올라오면서, 각 호출에서 조건에 따라 최대값 비교가 이루어져 최종적으로 maxVal(arr, 5)
로리턴돼서 ‘최대값’을 결정합니다.
이렇듯 재귀 함수는 조건을 만족하면 멈추고, 스택을 거슬러 올라가며 마지막에 원하는 결과를 도출하는 것이 방법론적인 특징입니다.
비슷한 질문과 답변을 통해 재귀 함수와 관련된 다른 예제를 참고하실 수도 있습니다:
재귀 함수와 배열의 최대값 찾기 방법 - 이 게시물에서는 배열의 최대값을 찾는 방법과 재귀 함수의 구체적 구현에 대해 설명합니다.
재귀 함수의 작동 방식 이해 - 재귀 함수의 작동 원리와 스택을 활용하는 방법에 대해 자세히 안내된 글입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.