프로그래밍의 기초(의사 코드 트레이스)

다음 프로시저 p를 p(3)으로 호출했을 때, 출력되는 값의 순서는?

○p(integer: n)
  if (n > 0)
    p(n − 1)
    output n
    p(n − 1)
  endif
  1. A1, 1, 2, 1, 1, 2, 3
  2. B3, 2, 1, 1, 2, 1, 1
  3. C1, 2, 1, 3, 1, 2, 1
정답과 해설 보기

정답: C. 1, 2, 1, 3, 1, 2, 1

p(1)은 p(0), 1의 출력, p(0) 순으로 실행하므로 '1'만 출력합니다. p(2)는 p(1), 2의 출력, p(1)이므로 '1, 2, 1'입니다. p(3)은 p(2)의 '1, 2, 1', 3의 출력, 다시 p(2)의 '1, 2, 1'로 1, 2, 1, 3, 1, 2, 1이 됩니다. 출력은 2³ − 1 = 7개로, 원판 3개인 하노이의 탑에서 옮기는 원판 번호의 순서와 같습니다.

이 분야 연습하기 분야로 돌아가기

프로그래밍의 기초(의사 코드 트레이스)의 다른 문제

  1. 다음 함수 fib를 fib(10)으로 호출했을 때의 반환값은?
  2. 다음 함수 c를 c(4, 2)로 호출했을 때, c가 호출되는 횟수(최초 호출 포함)는?
  3. ⊕는 비트별 배타적 논리합을 나타낸다. 다음 프로그램을 실행한 후의 x와 y의 값의 조합은?
  4. x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. 다음 프로그램을 실행한 후의 y의 값은?
  5. ∧는 비트별 논리곱을 나타낸다. 다음 프로그램을 실행한 후의 c의 값은?