책 내용 질문하기
1권 129쪽 41번, 1권 132쪽 47번
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
129,132
조회수
151
작성일
2019-10-06
작성자
탈퇴*원
첨부파일
자기순환 프로그램을 왜 실행하는지 모르겠습니다 자기순환함수를 안써줘도 while 문 조건에 만족하면 계속 돌아가는거 아닌가요? 자세한설명 부탁드립니다
답변
2019-10-07 18:04:30

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

 

? 어떤 부분에 대한 자세한 설명을 요청하시는지 이해하지 못했습니다.

 

재귀함수는 그저 수많은 함수 사용 방식 중에 하나일 뿐입니다.

말씀하신대로 단순히 while이나 for 같은 반복문을 통해서 구현하는 것도 가능하죠.

(사실 그게 더 편리할 수 있습니다.)

 

굳이 재귀함수의 사용 이유를 이야기해본다면 factorial, combination, fibonacci와 같은 수학식들은 재귀함수를 돌리는 방식으로 연산하는 것이 편하고(변수를 덜 사용함), 이미 이러한 방식으로 널리 사용되어 프로그래머들의 가독성을 위해 사용된다.. 정도가 될 것입니다.

 

그리고 재귀함수 방식이 시험에 자주 출제되니 학습하고 있어야 한다는 부분이 요점이 되겠네요 ㅠ

 

행복한 하루되세요 :)

  • 관리자
    2019-10-07 18:04:30

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

     

    ? 어떤 부분에 대한 자세한 설명을 요청하시는지 이해하지 못했습니다.

     

    재귀함수는 그저 수많은 함수 사용 방식 중에 하나일 뿐입니다.

    말씀하신대로 단순히 while이나 for 같은 반복문을 통해서 구현하는 것도 가능하죠.

    (사실 그게 더 편리할 수 있습니다.)

     

    굳이 재귀함수의 사용 이유를 이야기해본다면 factorial, combination, fibonacci와 같은 수학식들은 재귀함수를 돌리는 방식으로 연산하는 것이 편하고(변수를 덜 사용함), 이미 이러한 방식으로 널리 사용되어 프로그래머들의 가독성을 위해 사용된다.. 정도가 될 것입니다.

     

    그리고 재귀함수 방식이 시험에 자주 출제되니 학습하고 있어야 한다는 부분이 요점이 되겠네요 ㅠ

     

    행복한 하루되세요 :)

  • 관리자
    2019-10-08 16:38:55

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

     

    예, 같습니다.

    확실히 while문과 재귀함수가 동시에 사용될 필요가 없는 코드가 구성되어있네요.

     

    해당 코드들은 수험자에게 시험에 자주출제되는 재귀함수의 결과 도출 방법과 전역변수에 대해 설명하기 위해 제작한 코드입니다.

     

    의도를 유지하기 위해서 재귀함수 호출 부분을 삭제하는 것보다는 while을 삭제하고 if return을 추가하여 해석하는 것이 좋을 것 같습니다.

     

    41번 prnt()

    if (a >= b) return;

    ++a;

    c = c + a;

    prnt();

     

    47번 prnt()

    if (*x >= *y) return;

    ++*x;

    *z = *z + *x;

    prnt(x, y, z);

     

    행복한 하루되세요 :)

  • *
    2019-10-08 00:23:15

     

    While문의 (a<b) 조건이 만족하니까  a=5가 될때까지 계속돌아가는거 같아서요!

     

    직접 돌려보니  prnt()가 없어도 결과는 같게 나오는데 prnt()를 꼭써야하는 건가싶어서 질문드렸습니다!

     

    문제에서 prnt()가있으나없으나 답은 똑같은거 맞나요?

     

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