인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

osc6807님의 프로필 이미지

작성한 질문수

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

함수와 재귀함수 (v2)

39:32 질문드립니다.

해결된 질문

작성

·

77

0

재귀함수에서 결과값이 15로 나온 것은 이해를 하였습니다. 단순 노가다식으로 접근하면 크게 어렵지 않을 것 같아요.

 

근데 입력값이 5가 되는 것이 이해가 되지 않습니다.

초기식에 5를 입력하고 계속 재귀함수로 n값이 낮아지면서 결국엔 n이 0값이 되는데 입력값은 그렇다면 0으로 바뀌는 것이 아닌가요?

 

답변 2

1

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

입력값이 바뀐다는 말씀이 무슨 말씀이실까요?

 

지금 저희가 계산해야하는 함수는

int a = 5;
int sum = nSum(a);

이 영역입니다.

 

그래서 무조건 nSum(5)로 시작합니다.

나머지 재귀함수는 nSum(5)를 계산하는 과정에서 스스로 부르는 것이기 때문에 초기에 들어온 입력값과는 전혀 상관이 없습니다. (영향을 주지 않는다는 것입니다.)

 

우리가 계산해야하는 결과는 nSum(5)인 것이고,

nSum(5)가 스스로를 계속 부르고 있는 것이죠.

 

메인함수 -> nSum(5) 계산해와

 

nSum(5) : 내가 계산되려면 내 스스로를 부르는 코드네. 그럼 계속 불러서 최종 리턴값을 메인함수에서 나를 호출한 곳으로 전달해줘야겠다.

 

이렇게 되는 것입니다.

이해에 도움이 되셨을까요?

 

제가 질문을 제대로 이해했는지 모르겠습니다.

추가 질문은 대댓글로 부탁드립니다.

osc6807님의 프로필 이미지
osc6807
질문자

이해 잘 됐습니다.

영향을 주지 않는다는 것을 잘 몰라 헷갈렸네요 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

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

재귀 함수의 동작 원리를 잘 이해하고자 하시는 것 같습니다. 재귀 함수는 함수가 자기 자신을 호출하여 문제를 해결하는 방식입니다. 이 과정에서 입력 값이 감소하는 방식으로 작동하지만, 가장 중요한 점은 각 호출이 개별적인 함수 호출로 취급된다는 것입니다.

재귀 함수의 동작 설명:

  1. 초기 호출:

    • 처음에 n 값이 5로 주어졌다면, nSum(5)를 호출하게 됩니다.
  2. 재귀 호출:

    • 내부에서 nSum(n)이 호출되며, 이 때마다 n의 값을 줄여나가게 됩니다. 예를 들어, 첫 번째에서는 nSum(4)가 호출되고, 그 다음은 nSum(3)의 형태로 계속 이어집니다.
  3. 종료 조건:

    • 종료 조건에 도달할 때까지 함수가 계속 호출됩니다. 종료 조건은 일반적으로 n <= 0과 같은 형식으로, 이 조건을 충족하면 재귀 호출을 멈추고 값을 반환합니다.
  4. 각각의 호출은 독립적:

    • 중요한 점은 각 호출이 독립적이라는 것입니다. 즉, 변수가 줄어들면서 호출된 각각의 위치에서 원본 n값은 그대로 유지되고, 다음 호출에서만 줄어든 n값을 사용하게 됩니다.

이를 통해 nSum(0)에 도달하면 각 호출 스택이 차곡차곡 정리되면서 최종 합산을 수행하고 결과값으로 돌아가는 것입니다.

이와 관련된 유사한 질문과 답변들이 존재하니 참고 부탁드립니다:

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

osc6807님의 프로필 이미지

작성한 질문수

질문하기