inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

Java언어 기출문제의 변형

21분 33초, 재귀함수 출력값 중

해결된 질문

89

Hu Young Lee

작성한 질문수 6

0

안녕하세요, 아래에서 Add 0이 출력되는 부분 관련 여쭙습니다.

image.png

아래 부모 코드 블록에서 n이 0인 경우에는, 0을 return하는데

class Sum {
    int sum(int n) { // 5
        if (n <= 0) {
            return 0;
        } else {
            return n + sum(n - 1);
        }
    }
}

n = 1 일 때, 1 + sum(0)에서 sum(0)이 재정의된 자식의 메서드를 호출하여, "Add 0"이 출력되는 것인지,

왜 부모의 sum(0)의 값인 0을 return하는지, 헷갈려서 질문을 드립니다...!

python java c 정보처리기사

답변 2

1

주말코딩

자식에서 명시적으로 super.메서드() 한 것이 아니라면, 재정의된 자식 메서드를 실행하기 때문입니다.

부모의 sum(0)이 값이 아니라, 자식 메서드에 0이 들어가서 출력하고 0을 리턴한 것입니다.

 

자식 sum에 0이 들어감 -> 자식 내의 출력문 수행 -> 리턴값 자체가 부모의 sum()에 0을 넣으라고 호출 -> 부모의 sum()에 가보니까 0인 경우 if문에 걸려 0을 리턴

 

이렇게 되는 것입니다.

0

Hu Young Lee

매번 빠르게 답변해주셔서 감사합니다!

0

인프런 AI 인턴

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

재귀 함수와 관련하여 혼란스러운 부분이 있으신 것 같네요. 질문 주신 내용에서 “Add 0”이 출력되는 이유와 부모 클래스의 sum 메서드에서 n이 0일 때의 동작에 대해 정리해보겠습니다.

  1. 재귀 호출 과정:

    • sum 메서드는 재귀적으로 호출됩니다. 즉, sum(5)를 호출하면 sum(4), sum(3), …, sum(0)까지 순차적으로 호출됩니다.
  2. 자식 클래스의 메서드 동작:

    • 주어진 코드에서는 자식 클래스에서 sum 메서드를 오버라이드하며, 먼저 “Add n”을 출력한 다음, super.sum(n)을 호출합니다.
    • 자식 클래스의 sum 호출은 부모 클래스의 sum을 호출하기 전 “Add 0”까지 출력하게 됩니다.
  3. 기저 조건(Base Case):

    • 부모 클래스 Sumsum 메서드는 n <= 0일 때 0을 반환하며, 이 반환이 이루어지면 더 이상 재귀 호출이 발생하지 않습니다.
    • 즉, 실제로 출력 순서는 “Add 0”이 출력된 이후, 최종적으로 부모의 sum(0)에서 0이 반환됩니다.
  4. 실행 흐름:

    • 따라서, 질문하신 n = 1일 때에는 “Add 1” 출력 후 super.sum(0)이 호출되면서 “Add 0”이 출력되고, 그 다음에 base case에 의해 0이 리턴되는 것입니다.

관련 질문과 답변을 통해 보다 자세히 이해하실 수 있도록 다음 링크를 추천드립니다:

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

영상 다운로드는 안되나요?

0

5

0

26년2회 실기기출은 언제쯤...

0

51

2

이론 공부법 요약본 버전 업데이트 문의

0

35

2

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

58

2

조건 반복문 질문: for 문 ?

0

66

1

정처기 26-2회. 9번 질문드립니다!

0

86

1

이론 보면서 질문이 있습니다.

0

82

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

93

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

155

2

262 정처기 실기 C언어코딩

0

53

1

정보처리기사 262 실기 Hash(해시) 질문

0

86

2

static 변수 질문입니다.

0

66

2

파이썬 4강 질문입니다.

0

73

2

모의고사 1회 3번문제

0

95

3

41강 30:10

0

70

2

이론 공부법 질문 있습니다.

0

96

2

부모의 생성자 관련 질문

0

70

2

시험지 문제에 필기해도 되나요?

0

92

3

41강 11:23

0

61

2

4강파이썬 질문입니다

0

58

2

try-catch 핸들러명

0

72

2

36강 3:48

0

70

2

35강 18:27

0

69

2

자식 코드 내 super() 생략

0

63

2