안녕하세요.
재귀호출의 과정을 설명하기 위한 문제라고 이해하시면 될 것 같습니다.
물론 재귀호출 형태가 아니라
prnt() 함수를 여러 번 호출해서 결과를 산출할 수도 있고
prnt() 함수 안에서 다시 prnt()를 호출하는 재귀 호출 과정으로 구현할 수도 있습니다.
문제는 재귀 함수의 이해를 위해 제작된 것으로
재귀 호출이 프로그래머에 의해 필요한 경우 작성되는 것으로 무조건 재귀 호출을 사용해야 하는 것은 아닙니다.
121쪽 47번에서 prnt 함수가 호출된 횟수만큼
91쪽 3번의 main() 함수 안에서
prnt(&a, &b, &c);를 여러 번 사용해서도 구현할 수 있다는 의미입니다.
재귀호출에 관한 내용은 이해가 돼 있는데 제가 이해하기로는 굳이 재귀호출문을 사용하지 않아도 되는 프로그램에 재귀호출문이 들어가 있어서 제가 뭔가 잘못 이해하고 있는게 아닐까 해서 한 질문이었습니다.
혹시 답변하시는 분이 제 질문을 잘못 이해하신 건 아닌지 모르겠습니다.
그래서 다시 한번 질문드립니다.
121쪽 47번 문제가 위 답변처럼 단순히 재귀호출의 과정을 설명하기 위한 문제라면
프로그램을 아래와 같이 while 함수 내의 재귀호출함수 prnt()를 없애도 같은 결과가 나온다는 말인가요?
아니면 아예 다른 결과가 나오는지요? 다른 결과가 나온다면 결과값이 어떻게 되는지요?
#include
void prnt(int *a, int *b, int *c);
main( ) {
int a = 0, b = 5, c = 0;
prnt(&a, &b, &c);
printf("a=%d, b=%d, c=%d\n", a, b, c);
}
void prnt(x, y, z)
int *x, *y, *z;
{
while (*x < *y) {
++*x;
*z = *z + *x;
}
}
안녕하세요.
121쪽 47번 문제에서 while 함수 안에 재귀함수 prnt를 없애고
b의 초기값을 91쪽 3번 문제와 같이 b=10으로 지정하면 동일한 결과가 산출됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-04-04 20:29:05
안녕하세요.
121쪽 47번 문제에서 while 함수 안에 재귀함수 prnt를 없애고
b의 초기값을 91쪽 3번 문제와 같이 b=10으로 지정하면 동일한 결과가 산출됩니다.
오늘도 즐거운 하루 되세요.