모두CBT

다음 C 프로그램의 실행 결과는?#include <stdio.h&… | [7급 국가직 자료구조론] 26년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 26년 1회차
다음 C 프로그램의 실행 결과는?
#include <stdio.h>

int count = 0;

void new_hanoi(int n, char from, char tmp, char to) {
if (n <= 2)
count += n;
else {
new_hanoi(n - 2, from, to, tmp);
count += 2;
new_hanoi(n - 2, tmp, from, to);
}
}

int main() {
new_hanoi(9, 'A', 'B', 'C');
printf("%d", count);
return 0;
}
1
31
2
46
3
62
4
511
해설

출력은 46이다.

count 증가량을 f(n)f(n)이라 하면 f(n)=n (n≤2)f(n)=n\ (n\le 2), f(n)=2f(n−2)+2f(n)=2f(n-2)+2이다.

f(1)=1f(1)=1
f(3)=2×1+2=4f(3)=2\times 1+2=4
f(5)=2×4+2=10f(5)=2\times 4+2=10
f(7)=2×10+2=22f(7)=2\times 10+2=22
f(9)=2×22+2=46f(9)=2\times 22+2=46

따라서 출력은 46이다.

  • 31은 원판 5개 일반 하노이 이동 횟수(25−12^5-1) 같은 값으로, 이 재귀식과 무관하다.
  • 62는 위 재귀식으로 얻어지지 않는 값이다.
  • 511은 원판 9개 일반 하노이 이동 횟수(29−12^9-1)로, 두 개씩 줄이는 이 함수와 다르다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 26년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기