책 내용 질문하기
기출 2019년 10월/3번
도서
2021 시나공 정보처리산업기사 실기
페이지
124
조회수
489
작성일
2021-07-02
작성자
탈퇴*원
첨부파일
해설을 읽는데 재귀함수가 왜 이렇게 동작하는지 이해가 안돼서요ㅠ 해설(225p)에서 6번 동그라미에서 2번환까지는 이해가 되는데 그 반환 된 2가 n으로 가지 않고 갑자기 recursive() 함수 자체가? 되는지 이해가 안됩니다 1-5번까지의 과정 처럼 n위 값에 들어가지 않고 값이 되어버리는 이유는 뭔가요?
답변
2021-07-05 09:32:06

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

 

무언가를 혼동하고 계신듯 합니다.

 

n = calc(3)

위와 같이 프로그래밍 언어에서 함수가 무언가를 호출하고, 그 결과로 100을 돌려받았다고 가정하죠.

그럼 n에 100이 저장되겠죠. 

여기서 n에 100이 저장된다는 말은 'calc(3)'이 100으로 치환되었다는 것과 동일합니다.

 

225쪽의 해설을 기준으로 사용자는 (2*recursive(0)) + 1을 계산할 때, recursive(0)의 결과를 구하기 위해 ⑤번으로 진행하죠.

계산 결과 2가 나오고 ⑥번과 같이 돌려줄 때, 이를 호출했던 recursive(0)이 결과인 2로 치환되면서 (2*2)+1 이라는 계산식으로 바뀌고 이 계산식의 결과가 다시 recursive(1)의 반환값으로 돌려지는 것이죠.

 

함수에서의 반환값이 호출 명령문 자체와 치환된다는 점에 주의하세요.

 

행복한 하루되세요 :)

  • 관리자
    2021-07-05 09:32:06

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

     

    무언가를 혼동하고 계신듯 합니다.

     

    n = calc(3)

    위와 같이 프로그래밍 언어에서 함수가 무언가를 호출하고, 그 결과로 100을 돌려받았다고 가정하죠.

    그럼 n에 100이 저장되겠죠. 

    여기서 n에 100이 저장된다는 말은 'calc(3)'이 100으로 치환되었다는 것과 동일합니다.

     

    225쪽의 해설을 기준으로 사용자는 (2*recursive(0)) + 1을 계산할 때, recursive(0)의 결과를 구하기 위해 ⑤번으로 진행하죠.

    계산 결과 2가 나오고 ⑥번과 같이 돌려줄 때, 이를 호출했던 recursive(0)이 결과인 2로 치환되면서 (2*2)+1 이라는 계산식으로 바뀌고 이 계산식의 결과가 다시 recursive(1)의 반환값으로 돌려지는 것이죠.

     

    함수에서의 반환값이 호출 명령문 자체와 치환된다는 점에 주의하세요.

     

    행복한 하루되세요 :)

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