문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> void solve(int m) { if (m <= 1) return; printf("%d ", m); solve(m - 2); solve(m - 1); printf("%d ", m); } int main() { solve(4); return 0; }
정답
4 2 2 3 2 2 3 4
4 2 2 3 2 2 3 44 2 2 3 2 2 3 4
해설
solve(4)부터 출력 순서를 직접 추적하면 된다.
- solve(4): 4 출력
- solve(2): 2 출력 → solve(0) 종료 → solve(1) 종료 → 2 출력
- solve(3): 3 출력 → solve(1) 종료 → solve(2): 2 출력 → solve(0) 종료 → solve(1) 종료 → 2 출력 → 3 출력
- 마지막으로 solve(4)에서 4 출력
따라서 전체 출력은
4 2 2 3 2 2 3 4이다.