강의

멘토링

로드맵

Inflearn brand logo image

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

Haji Ma님의 프로필 이미지
Haji Ma

작성한 질문수

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

함수와 재귀함수 (v2)

59분58초

해결된 질문

작성

·

134

·

수정됨

0

안녕하세요, 비전공자 수강생입니다.

공부하다 헷갈려서 질문드립니다.

17강 함수와 재귀함수 (v2) 59분58초 질문을 드립니다.

 

 

maxVal(arr,1)은

size==1 조건에 만족하기에,

maxVal(arr,1)라는 식 전체를 a[0]으로 호출받는다는 해석이 맞을까요?

 

maxVal(arr,1) 내의 arr를 뭐 따로 어떻게 해석하고 말고 필요없이,

그냥 maxVal(arr,1) 전체가 arr[0]이 되었으니,

이제 arr[1]>arr[0]과 비교해 각기 값을 호출받아 5>1 비교가 되었고, 참이 되었으니 삼항연산자의 참값인 arr[1]을 호출받고서는

maxVal(arr,2)=arr[1] 이 되고선

그 이후 계속해서 같은 방식으로 계산을 하니깐 %d에 들어갈 maxVal 최종값이 9가 나오기는 하던데

이게 맞는 해석법인지 궁금합니다.

 

특히, "maxVal(arr,1) 내의 arr를 뭐 따로 어떻게 해석하고 말고 필요없이" 이부분이 제가 맞게 해석을 했는지 궁금합니다.

답변 2

1

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

네, 함수 호출 값에는 그 함수가 리턴한 값이 들어가는 것이 맞습니다.

그게 리턴 값의 정의입니다. 해당 함수가 계산하고 arr[0]을 리턴해준 것이죠.

그 리턴 값으로 상위에서 호출한 함수로 들어가서, 다시 함수는 그것을 기반으로 계산하고, ....

 

반복하다가 최초 호출한 함수가 계산이 끝나면 그 값을 돌려주면 답이 됩니다.

1

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

재귀 함수에서 maxVal(arr, size)와 같은 표현을 공부하시는 데에 약간의 혼란이 있으신 것 같습니다. 이를 쉽게 이해할 수 있도록 설명드리겠습니다.

  1. 재귀 함수의 반환: maxVal(arr, 1)의 경우, size == 1 조건을 만족하게 되어 있습니다. 이는 배열의 첫 번째 요소 arr[0]을 반환하게 되는 조건입니다. 그래서 maxVal(arr, 1)은 결국 arr[0]의 값을 반환한다고 볼 수 있습니다.

  2. 삼항 연산자의 사용: 재귀 호출에서 arr[1] > arr[0]을 비교하는 과정은 5 > 1이라는 비교를 수행하며, 이 경우 참이기 때문에 arr[1]의 값이 선택됩니다. maxVal(arr, 2)는 이로 인해 arr[1]의 값을 가지게 됩니다.

  3. 계속되는 재귀 호출: 이후의 재귀 호출에서도 마찬가지로 배열의 요소들을 차례로 비교하면서 가장 큰 값을 찾아나가게 되며, 모든 비교가 끝났을 때 최종 최대값인 9가 반환되게 됩니다.

관련 질문 및 설명

지금 하신 해석이 맞으며, 함수 내의 배열에 대해 따로 해석하기보다는 재귀 호출이 전체적으로 어떻게 이루어지는지 이해하려는 방식이 중요합니다.

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

Haji Ma님의 프로필 이미지
Haji Ma

작성한 질문수

질문하기