모두CBT

다음 C 프로그램에서 main() 함수를 실행할 때 fib() 함수가 … | [국회직 9급 컴퓨터일반] 17년 1회차 기출문제 상세 페이지

1[국회직 9급 컴퓨터일반] 17년 1회차
다음 C 프로그램에서 main() 함수를 실행할 때 fib() 함수가 호출되는 횟수로 옳은 것은?
#include <stdio.h>
int fib(int n)
{
if(n == 0) return 0;
if(n == 1) return 1;
return(fib(n-1) + fib(n-2));
}
int main()
{
fib(5);
}
1
3번
2
5번
3
10번
4
12번
5
15번
해설

fib(5)를 실행하면 fib() 함수는 모두 15회 호출된다.

fib(n)의 호출 횟수는 자기 자신 1회에 두 재귀 호출의 횟수를 더한 값이다.
C(n)=1+C(n−1)+C(n−2)C(n) = 1 + C(n-1) + C(n-2)
C(0)=1, C(1)=1C(0)=1,\ C(1)=1
C(2)=3, C(3)=5, C(4)=9C(2)=3,\ C(3)=5,\ C(4)=9
C(5)=1+9+5=15C(5)=1+9+5=15

  • 3회: fib(5)와 그 직접 호출인 fib(4), fib(3)만 센 값이다.
  • 5회: fib(5)에서 fib(1)까지 가장 깊은 경로 하나만 센 값이다.
  • 10회: fib(5) 1회와 fib(4) 쪽 9회만 더해 fib(3) 쪽 5회가 빠진 값이다.
  • 12회: fib(3) 쪽 호출의 중복 호출을 일부 빠뜨린 값이다.

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

이어서 풀어보기

[국회직 9급 컴퓨터일반] 17년 1회차 20문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요국회직 9급 컴퓨터일반 기출문제 암기장 전체 보기