문제
다음 C 코드의 실행 결과를 쓰시오.
C#include <stdio.h> typedef struct { int level; int value; } Node; int process(Node n) { if (n.level <= 0) return n.value; Node left = {n.level - 1, n.value * 2}; Node right = {n.level - 1, n.value + 3}; return process(left) + process(right); } int main() { Node root = {3, 1}; printf("%d", process(root)); return 0; }
정답
63
63
해설
process({3,1})은 두 자식 노드를 생성한다: left={2,2}, right={2,4}. process({2,2})는 left={1,4}, right={1,5}를 생성하여 4+5=9를 반환. process({2,4})는 left={1,8}, right={1,7}을 생성하여 8+7=15를 반환. process({1,4})는 left={0,8}, right={0,7}을 생성하여 8+7=15를 반환. process({1,5})는 left={0,10}, right={0,8}을 생성하여 10+8=18을 반환. process({1,8})는 left={0,16}, right={0,11}을 생성하여 16+11=27을 반환. process({1,7})는 left={0,14}, right={0,10}을 생성하여 14+10=24를 반환. 최종 결과: (15+18)+(27+24) = 33+30 = 63