다음 재귀 함수를 동일한 기능의 반복 함수로 바꿀 때, ㉠과 ㉡에 들어… | [9급 지방직 컴퓨터일반] 20년 1회차 기출문제 상세 페이지
1[9급 지방직 컴퓨터일반] 20년 1회차
다음 재귀 함수를 동일한 기능의 반복 함수로 바꿀 때, ㉠과 ㉡에 들어갈 내용을 바르게 연결한 것은? (순서대로 ㉠, ㉡)int func (int n) { //재귀 함수
if (n == 0)
return 1;
else
return n * func (n - 1);
}
int iter_func (int n) { //반복 함수
int f = 1;
while ( ㉠ )
㉡
return f;
}
1
n < 0, f = f * n--;
2
n < 0, f = f * n++;
3
n > 0, f = f * n--;
4
n > 0, f = f * n++;
해설
빈칸에는 n > 0과 f = f * n--;가 들어간다.
재귀 함수는 n × (n−1) × … × 1, 즉 n!을 계산한다. 반복 함수는 f = 1에서 출발해 n이 0보다 큰 동안 f에 n을 곱하고 n을 1씩 줄이면 같은 결과가 된다. 예를 들어 n = 3이면 f는 3, 6, 6으로 변하고 n이 0이 되어 반복이 끝난다.
- n < 0과 f = f * n--;의 조합은 양수 n에서 반복문이 한 번도 실행되지 않아 항상 1을 반환한다.
- n < 0과 f = f * n++;의 조합도 양수 n에서 조건이 처음부터 거짓이라 항상 1을 반환한다.
- n > 0과 f = f * n++;의 조합은 n이 계속 커져 0에 도달하지 않으므로 반복이 끝나지 않는다.
내용에 오류가 있거나 최신 법령·기준과 다른 부분이 보이면 알려주세요. 확인 후 반영하겠습니다.