문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> int process(int x) { if (x <= 1) return x; int left = process(x - 2); printf("%d ", x); int right = process(x - 1); return left + right; } int main() { process(4); return 0; }
정답
4 2 3
4 2 3
해설
process(4) 호출 시: 먼저 process(2)를 호출하고, process(2)에서는 process(0)을 호출한 후 '2'를 출력하고 process(1)을 호출한다. process(4)로 돌아와 '4'를 출력한 후 process(3)을 호출하고, process(3)에서는 process(1)을 호출한 후 '3'을 출력하고 process(2)를 호출한다. 따라서 출력 순서는 2, 4, 3이다.