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

다음 함수 s를 s(7)로 호출했을 때의 반환값은?

○integer: s(integer: n)
  if (n ≦ 0)
    return 0
  endif
  return n + s(n − 2)
  1. A15
  2. B16
  3. C28
정답과 해설 보기

정답: B. 16

s(7)은 7 + s(5)를, s(5)는 5 + s(3)을, s(3)은 3 + s(1)을, s(1)은 1 + s(−1)을 구하려고 차례로 호출하며, s(−1)은 n ≦ 0이므로 0을 반환합니다. 호출한 곳으로 돌아가면서 더해져 s(7) = 7 + 5 + 3 + 1 + 0 = 16이 됩니다. 7 이하의 양의 홀수의 합입니다.

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

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

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