안녕하세요 길벗수험서 운영팀입니다.
? 어떤 부분에 대한 자세한 설명을 요청하시는지 이해하지 못했습니다.
재귀함수는 그저 수많은 함수 사용 방식 중에 하나일 뿐입니다.
말씀하신대로 단순히 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()가있으나없으나 답은 똑같은거 맞나요?