문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> void calculate(int depth) { if (depth <= 1) { printf("%d ", depth); return; } calculate(depth - 2); printf("%d ", depth); calculate(depth - 1); } int main() { calculate(4); return 0; }
정답
0 2 1 4 1 3 0 2 1
0 2 1 4 1 3 0 2 1
해설
calculate(4) 호출 과정을 순서대로 추적하면 다음과 같다.
- calculate(4) → calculate(2)
- calculate(2) → calculate(0) → "0 " 출력
- calculate(2)로 복귀 → "2 " 출력
- calculate(2) → calculate(1) → "1 " 출력
- calculate(4)로 복귀 → "4 " 출력
- calculate(4) → calculate(3)
- calculate(3) → calculate(1) → "1 " 출력
- calculate(3)로 복귀 → "3 " 출력
- calculate(3) → calculate(2)
- calculate(2) → calculate(0) → "0 " 출력
- calculate(2)로 복귀 → "2 " 출력
- calculate(2) → calculate(1) → "1 " 출력 따라서 최종 출력은 "0 2 1 4 1 3 0 2 1"이다.