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

다음 함수 c를 c(4, 2)로 호출했을 때, c가 호출되는 횟수(최초 호출 포함)는?

○integer: c(integer: n, integer: k)
  if (k = 0 or k = n)
    return 1
  endif
  return c(n − 1, k − 1) + c(n − 1, k)
  1. A5
  2. B6
  3. C11
정답과 해설 보기

정답: C. 11

c(n, k)는 n개에서 k개를 고르는 조합의 수(이항 계수)를 파스칼의 삼각형 관계로 구합니다. c(4, 2)는 c(3, 1)과 c(3, 2)를 호출하고, 각각이 다시 c(2, 0)과 c(2, 1), c(2, 1)과 c(2, 2)를 호출하며, 2번 나타나는 c(2, 1)은 둘 다 c(1, 0)과 c(1, 1)을 호출합니다. 1을 반환하는 호출이 6회, 두 호출을 수행하는 호출이 5회로 합계 11회입니다. 반환값은 6이며, 1을 반환하는 호출의 횟수와 일치합니다.

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

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

  1. ⊕는 비트별 배타적 논리합을 나타낸다. 다음 프로그램을 실행한 후의 x와 y의 값의 조합은?
  2. x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. 다음 프로그램을 실행한 후의 y의 값은?
  3. ∧는 비트별 논리곱을 나타낸다. 다음 프로그램을 실행한 후의 c의 값은?
  4. x와 y는 8비트 부호 없는 정수라고 한다. <<와 >>는 논리 시프트이며, 빈 비트에는 0이 들어가고 8비트를 넘친 비트는 버린다. ∨는 비트별 논리합을 나타낸다. x가 75일 때, 다음 대입을 실행한 후의 y의 값은?
  5. 다음 프로시저 bubble은 정수형 배열 data를 오름차순으로 정렬하는 버블 정렬이다. swap(data, j, k)는 data[j]와 data[k]의 값을 교환하는 프로시저이며, 배열의 인덱스는 1부터 시작한다. 프로그램 중의 【a】에 들어갈 것은?