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

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

정철님의 프로필 이미지

작성한 질문수

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

(기출) 2023년 3회 코드해석 문제

2023년 3회 코드해석 문제 2차 재귀함수 질문입니다.

해결된 질문

작성

·

40

0

안녕하세요.

설명 잘 해주셔서 1+1까지는 이해가 되는데요.

 

그 위에 6, 5, 4는 왜 더하지 않는지 이해가 잘 안가서요.

 

그 전에 나왔던 1차 재귀함수 7x6x5x4x3x2x1은 이해가 됐는데

 

그 문제와 동일한 방식으로 보면 6,5,4를 같이 더해야 하지 않나 해서 궁금해서 여쭤봅니다.

답변 2

0

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

안녕하세요~ 번거로우시겠지만, 영상 내 몇분 몇초인지 작성해주셔야 답변이 가능합니다!

정철님의 프로필 이미지
정철
질문자

18:40초경입니다!

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

6, 5, 4라는 것이 어떻게 나오는지 잘 모르겠습니다.

호출한 것만 리턴하면 됩니다.

 

지금 보면 둘 중에 자식 클래스에 있는 것을 실행해야한다는 것은 아시겠죠? 같은 이름에 같은 파라미터를 봐서 자식 클래스에서 재정의했으니까요.

 

그러면 int compute(7)만 실행하면 되죠.

여기서 갈라질 때는 그냥 상위 함수가 호출한 것만 잘 계산해서 주면 됩니다.

 

compute(6) + compute(4)를 호출한 겁니다. 각각 빼기1 빼기3한거니까요.

그게 끝입니다.

 

그것을 계산하려면 또 6, 4에 대해서 가지가 갈라지는 것 뿐이죠.

 


 

재귀함수를 헷갈리는 이유는 자기 자신을 부른다는 환상때문에 그렇습니다.

자기자신을 부른다고 생각하지마시고, 아예 다른 함수명을 가진 것을 호출한다고 생각하시면 덜 헷갈릴 수 있습니다.

compute(6) + compute(4)가 아니라 아예 다른 abc(6)+bdc(4)라고 생각하시고, 로직은 똑같다고 생각해보세요.

 

그러면 그냥 단순히 숫자만 넣어가면서 쭉 리턴해주면 됩니다.

0

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

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

재귀 함수의 결과값에서 특정 숫자가 더해지지 않는 이유에 대해 궁금해하고 계시는군요. 재귀 함수는 주어진 논리와 조건에 따라 특정한 연산을 수행하며 호출됩니다. 예를 들어, compute(n-1) + compute(n-3) 형태로 호출되는 경우, 계산의 흐름은 함수의 정의에 따라 결과가 달라질 수 있습니다.

재귀 함수 문제 설정

  • 문제 설명:

    • 재귀 호출에서는 각 재귀 단계마다 정의된 기준(예: n-1, n-3)에 따라 함수가 호출됩니다.
    • 특정 조건에 해당하지 않으면, 및 계산의 경로에 포함되지 않는 값들은 결과에 영향을 미치지 않습니다.
  • 핵심 이해:

    • 예를 들어 compute(7)이 호출되었을 때 compute(6) + compute(4)처럼 내려갑니다. 이때, 각각의 결과값은 주어진 조건에 따라 다시 새로운 값으로 체계적으로 계산됩니다.
    • 특정 값들이 최종 누적 연산에 포함되지 않는 이유는 이러한 경로에서는 사용되지 않기 때문입니다.

관련된 설명과 답변이 담긴 기존의 질문과 답변을 통해 더 깊이 있는 이해에 도움이 될 수 있습니다:

재귀 함수 연산의 디테일을 이해하는 데 도움이 될 수 있도록 이 자료를 참고해 보세요. 추가적으로 궁금한 점이 있으시면 언제든지 질문해 주시기 바랍니다.

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

정철님의 프로필 이미지

작성한 질문수

질문하기