책 내용 질문하기
실기 101쪽 문제 5번 문의드립니다
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
101
조회수
681
작성일
2019-03-26
작성자
탈퇴*원
첨부파일

해설에

recursive(0) -> 2반환

위로 쭉 5 11 23 47 이 반환됐는데 이 숫자가 어디서 나온건지 모르겠습니다

답변
2019-03-28 10:00:58

안녕하세요 길벗수험서 운영팀입니다.

 

으음... 좀더 구체적으로 질문해주셔야 해설이 가능할 듯 싶습니다.

제가 해설보다 더 자세히 설명드릴 방법이 별로 없네요..

 

좀 간단히 식만을 갖고 설명드려보겠습니다.

 

소스코드를 보시면, 5를 입력했을 때 함수가 자신을 다시 호출하는 재귀함수의 형태를 취하고 있습니다.

즉, 처음 5가 들어가면

i=(2*recursive(4))+1  을 수행하죠. 

 

그럼 4로 호출되면

i=(2*recursive(3))+1 을 수행하고, 

 

3으로 호출되면

i=(2*recursive(2))+1 

 

2로 호출되면

i=(2*recursive(1))+1 

 

1로 호출되면

i=(2*recursive(0))+1 

 

여기서 0으로 호출되면 달라집니다. if문이 있기 때문이죠. 즉 recursive(0)은 return 2를 통해 2라는 값을 반환합니다.

이 것을 차례대로 되돌아가면 됩니다.

 

즉 1이 호출될 때 수행되었던

i=(2*recursive(0))+1 는 

i=(2*2)+1 가 되어 i = 5가 되고 

return i; 를 통해 5를 반환합니다. 즉, recursive(1)의 반환값은 5라는 의미죠.

 

2가 호출될 때 수행되었던

i=(2*recursive(1))+1 은 

i=(2*5)+1 이 되어 i = 11이 되고

return i; 를 통해 11을 반환합니다.

 

이러한 방식대로 계속 올라가 마지막에 recursive(5)의 반환값은 결국 95가 됩니다.

 

코드의 순서를 차례대로 잘 따라가보세요. 재귀함수가 코드 순서가 헷갈릴 수 있으나, 침착하게 호출했던 코드들을 기억하면서 따라가다보면 생각보다 쉽게 답을 구할 수 있습니다.

 

행복한 하루되세요 :)

  • 관리자
    2019-03-28 10:00:58

    안녕하세요 길벗수험서 운영팀입니다.

     

    으음... 좀더 구체적으로 질문해주셔야 해설이 가능할 듯 싶습니다.

    제가 해설보다 더 자세히 설명드릴 방법이 별로 없네요..

     

    좀 간단히 식만을 갖고 설명드려보겠습니다.

     

    소스코드를 보시면, 5를 입력했을 때 함수가 자신을 다시 호출하는 재귀함수의 형태를 취하고 있습니다.

    즉, 처음 5가 들어가면

    i=(2*recursive(4))+1  을 수행하죠. 

     

    그럼 4로 호출되면

    i=(2*recursive(3))+1 을 수행하고, 

     

    3으로 호출되면

    i=(2*recursive(2))+1 

     

    2로 호출되면

    i=(2*recursive(1))+1 

     

    1로 호출되면

    i=(2*recursive(0))+1 

     

    여기서 0으로 호출되면 달라집니다. if문이 있기 때문이죠. 즉 recursive(0)은 return 2를 통해 2라는 값을 반환합니다.

    이 것을 차례대로 되돌아가면 됩니다.

     

    즉 1이 호출될 때 수행되었던

    i=(2*recursive(0))+1 는 

    i=(2*2)+1 가 되어 i = 5가 되고 

    return i; 를 통해 5를 반환합니다. 즉, recursive(1)의 반환값은 5라는 의미죠.

     

    2가 호출될 때 수행되었던

    i=(2*recursive(1))+1 은 

    i=(2*5)+1 이 되어 i = 11이 되고

    return i; 를 통해 11을 반환합니다.

     

    이러한 방식대로 계속 올라가 마지막에 recursive(5)의 반환값은 결국 95가 됩니다.

     

    코드의 순서를 차례대로 잘 따라가보세요. 재귀함수가 코드 순서가 헷갈릴 수 있으나, 침착하게 호출했던 코드들을 기억하면서 따라가다보면 생각보다 쉽게 답을 구할 수 있습니다.

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.