문제6번 해답에는
Q1.
숫자를 입력하시오 : 5
11
23
47
95
인데
recursive(1)의 값은 5고, 괄호안의 값(n)이 1일때 if(n<1)의 조건을 만족하지 않으므로 else식에 해당하니
recursive(1)~recursive(5)까지의 값을 모두 출력한다면
숫자를 입력하시오 : 5
5
11
23
47
95
가 답이 되어야 하는 거 아닌가요?
Q2
숫자를 입력하라는 문구 제외하고
출력 순서는 95 47 23 11 5라고 생각했는데
왜 낮은수부터 시작하나요?
출력순서를 모르겠네요
recursive(5)부터 시작하니 95가 먼저 출력되어야 한다고 봤는데 그게 아니네요
출력순서를 어떻게 해석해야 하는지 궁금합니다.
Q3
정보처리기사 실기 응시하는데
문항 옆에 "산기 17.4"
라고 적힌 문제는 보지 않아도 상관없나요?
안녕하세요. 길벗 수험서 운영팀입니다.
Q1.
숫자를 입력하시오 : 5
5
11
23
47
95
가 답이 되어야 하는 거 아닌가요?
[답변]
문제를 보면, "다음 프로그램을 수행하여 키보드로 “5”를 입력했을 때 출력결과를 쓰시오." 라고 되어 있습니다.
이러한 문제의 정답을 출력하는 경우, 입력 부분에 대한 것은 답 부분에 적지 않습니다.
즉, 출력되는 부분인
5
11
23
47
95
만을 정답으로 적어둔 것이지요.
"숫자를 입력하시오 : 5" 부분은 생략되어 연산 결과 출력된 것만을 답에 적어 놓은 것입니다.
Q2. 출력 순서는 95 47 23 11 5라고 생각했는데 왜 낮은수부터 시작하나요?
[답변]
해당 코드가 진행되는 순서를 하나씩 디버깅하면서 살펴보세요.
recursive(5)를 통해 사용자 정의 함수 recursive()에 진입하여서 i = (2 * recursive(n - 1)) + 1; 를 만났고, 이를 통해 recursive(4)로 진행됩니다. 그 아래의 printf()문은 실행되지 않았습니다.
코드를 실행 순서를 보면,
1. i = (2 * recursive(4)) + 1;
2. i = (2 * recursive(3)) + 1;
3. i = (2 * recursive(2)) + 1;
4. i = (2 * recursive(1)) + 1;
5. i = (2 * recursive(0)) + 1;
6. return 2;
7. printf("%d\n", 5); - 5번의 다음 줄
8. printf("%d\n", 11); - 4번의 다음 줄
9. printf("%d\n", 23); - 3번의 다음 줄
10. printf("%d\n", 47); - 2번의 다음 줄
11. printf("%d\n", 95); - 1번의 다음 줄
이 순서대로 진행되게 됩니다.
Q3. 문항 옆에 "산기 17.4"라고 적힌 문제는 보지 않아도 상관없나요?
[답변]
아닙니다.
정보처리기사 문제와 정보처리산업기사 문제들을 공통되어 출제된 경우가 많습니다.
산업기사에 출제되었더라고 하더라도 다음 회차의 기사 문제에 출제된 경우도 있죠.
산업기사에서만 출제된 문제라고 하더라도 무시하지 말고, 모두 풀어보는 것이 좋습니다.
행복한 하루되세요.^^
-
*2018-09-17 16:41:50
안녕하세요. 길벗 수험서 운영팀입니다.
Q1.
숫자를 입력하시오 : 5
5
11
23
47
95
가 답이 되어야 하는 거 아닌가요?
[답변]
문제를 보면, "다음 프로그램을 수행하여 키보드로 “5”를 입력했을 때 출력결과를 쓰시오." 라고 되어 있습니다.
이러한 문제의 정답을 출력하는 경우, 입력 부분에 대한 것은 답 부분에 적지 않습니다.
즉, 출력되는 부분인
5
11
23
47
95
만을 정답으로 적어둔 것이지요.
"숫자를 입력하시오 : 5" 부분은 생략되어 연산 결과 출력된 것만을 답에 적어 놓은 것입니다.
Q2. 출력 순서는 95 47 23 11 5라고 생각했는데 왜 낮은수부터 시작하나요?
[답변]
해당 코드가 진행되는 순서를 하나씩 디버깅하면서 살펴보세요.
recursive(5)를 통해 사용자 정의 함수 recursive()에 진입하여서 i = (2 * recursive(n - 1)) + 1; 를 만났고, 이를 통해 recursive(4)로 진행됩니다. 그 아래의 printf()문은 실행되지 않았습니다.
코드를 실행 순서를 보면,
1. i = (2 * recursive(4)) + 1;
2. i = (2 * recursive(3)) + 1;
3. i = (2 * recursive(2)) + 1;
4. i = (2 * recursive(1)) + 1;
5. i = (2 * recursive(0)) + 1;
6. return 2;
7. printf("%d\n", 5); - 5번의 다음 줄
8. printf("%d\n", 11); - 4번의 다음 줄
9. printf("%d\n", 23); - 3번의 다음 줄
10. printf("%d\n", 47); - 2번의 다음 줄
11. printf("%d\n", 95); - 1번의 다음 줄
이 순서대로 진행되게 됩니다.
Q3. 문항 옆에 "산기 17.4"라고 적힌 문제는 보지 않아도 상관없나요?
[답변]
아닙니다.
정보처리기사 문제와 정보처리산업기사 문제들을 공통되어 출제된 경우가 많습니다.
산업기사에 출제되었더라고 하더라도 다음 회차의 기사 문제에 출제된 경우도 있죠.
산업기사에서만 출제된 문제라고 하더라도 무시하지 말고, 모두 풀어보는 것이 좋습니다.
행복한 하루되세요.^^