강의

멘토링

로드맵

Inflearn brand logo image

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

김성태님의 프로필 이미지
김성태

작성한 질문수

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

Java언어 기출문제의 변형

Java언어 기출문제의 변형 간단한재귀함수 21:33

해결된 질문

작성

·

32

0

Add 5 출력 후 return super.sum(n) 을 하면 n=5 가 부모 클래스 SUM으로 호출되서 if문 false로 인해 else 실행하며 5 + sum(n-1) 은 알겠어 근데 왜 ADD4 가 출력되는지 정확하게 이해하지 못하겠습니다.

 

5+Sum(4)

4+Sum(3)

3+Sum(2)

2+Sum(1)

1+Sum(0)

n <=0 -> returm 0으로

제가 풀이된 답은

ADD 5

Sum : 15

로 되는데요

 

무슨 차이 이길래 다시 자식에게 ADD 4를 호출시키느거죠

 

답변 2

0

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

자식 생성자로 태어난 객체 (여기서는 as 변수)는 지금 Sum이라는 부모 클래스를 상속한 Adv에도 부모와 똑같은 이름의 메서드가 있습니다.

 

이름이 똑같은데 내용을 다른 걸로 작성하면 그걸 오버라이드, 한글로 메서드 재정의라고 합니다.

부모에서든 자식에서는 sum을 부르면 무조건 자식을 실행한다는 뜻입니다.

 

그런데, 자식에 오니 super.sum()이 있습니다. 이 경우는 다릅니다.

부모를 직접적으로 부릅니다. 내가 아니라 상위 클래스의 sum()을 실행하라는 것입니다.

 

그래서 부모의 메서드를 실행할 때만 위로가고, 부모의 sum 안에 있는 sum은 자식을 부르게 됩니다.

 

그래서 처음에 5가 들어가고, 리턴 super.sum(5)가 되는데 이 때는 부모로 올라갑니다.

거기서 else에 걸리고 5 + sum(4)가 됩니다.

여기서의 sum(4)는 부모가 아니라 자식입니다.

 

계속 반복되다가 마지막에 부모의 메서드의 탈출 조건에 드디어 걸려서 전체가 끝나게 됩니다.

 

이해가 되셨을까요?

김성태님의 프로필 이미지
김성태
질문자

부모와 자식에게 동일한 메서드 int sum(int n) 이 존재 하기에

자식에서 return super.sum(n) 호출 시 부모에서 if 문 불충족 후 else 실행하여 return 5+ sum(4)

sum(4)를 받아올 수 있는 메서드는 자식에게 재 정의 되어 있으므로 자식에게 전달되어 println Add 4 출력 후 다시 super.sum을 return하여 나오는 거라고 이해했습니다 .

제가 이해한게 맞을까요?

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

네 맞습니다. 그냥 sum은 자식 것으로, super.sum은 부모 것으로 해석하시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김성태님께서 질문하신 Java에서의 간단한 재귀함수 호출 문제에 대해 설명드리겠습니다.

재귀 함수는 자기 자신을 호출하는 함수입니다. 주어진 sum 메서드를 사용하면, 각 호출에서 Add라는 표시를 출력하고, 메서드 호출이 거듭되면서 값을 누적하게 됩니다. 이 과정은 아래와 같은 단계로 이루어집니다:

  1. 첫 호출 (n=5)

    • Add 5가 출력됩니다. 이는 자식 클래스의 sum 메서드에서 출력되는 것입니다.
    • super.sum(n)을 호출하게 되면 부모 클래스의 메서드가 호출됩니다.
    • 부모 클래스의 메서드에 의해 5 + sum(4)가 되며 다시 자식 메서드를 호출합니다.
  2. 두 번째 호출 (n=4)

    • Add 4가 출력됩니다. 자식 메서드의 또 다른 호출에 의해 발생합니다.
    • 이 과정이 반복되어 모든 n 값에 대해 Add n이 출력됩니다.
  3. 이와 같은 방식으로 반복되다가 n=0이 되었을 때, 재귀 종료 조건에 의해 return 0;으로 종료됩니다.

귀하가 예상하신 출력과 정확히 일치하는 이유는 바로 이러한 재귀적 호출 때문입니다. 모든 값의 누적과정이 명확하게 일어나며, 모든 호출에서의 출력은 누적되어 전체 프로세스를 구성하게 됩니다.

관련 질문 URL:
- 자바 기출문제 변형 문제 질문있습니다 - 해당 질문에서는 결과 출력 방식과 메서드 실행 순서에 대한 설명이 포함되어 있습니다.

한 번 재귀 호출과 각 단계의 결과를 손으로 추적해보시면 더욱 이해가 잘 되실 것입니다.

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

김성태님의 프로필 이미지
김성태

작성한 질문수

질문하기