재귀: 큰일을 같은 작은 일로 쪼개기
“웹사이트 만들기”는 무섭게 들리고, “홈 카피 세 줄 쓰기”는 누구나 할 수 있어요. 엔지니어링 심화편에서 Coding Agent가 큰 요구를 받으면 스스로 작은 작업 목록을 만드는 걸 보셨죠—그 사고에 이름이 있습니다: 재귀. 이번 강의는 코드 한 줄도 안 씁니다. 작업 트리를 클릭하고 슬라이더를 끌면, 프로그래머들이 가장 신비롭게 말하는 그 단어를 손에 넣을 수 있어요.
상사가 한 마디를 던집니다: “버블티 가게 웹사이트 만들어.” 바로 손댈 수는 없지만 쪼갤 수는 있어요. 아래 카드를 눌러 큰 일을 층층이 열고, ✋ “바로 할 수 있음”인 작은 일까지 쪼갠 뒤 “착수”를 누르세요. 두 가지를 보세요: 쪼갤 때는 위에서 아래로 펼쳐지고, 끝나면 초록이 아래에서 위로 “버블링”하며 모입니다.
재귀의 가장 신기한 점: 규칙은 하나뿐인데 결과는 한없이 복잡할 수 있어요. 아래 나무의 전체 설명서는 한 문장입니다(그림 아래). 슬라이더로 “쪼개기 층수”를 깊게 하고 보세요: 새 가지는 모두 이전 가지의 축소판—규칙은 처음부터 끝까지 안 바뀌고, 바뀌는 건 규모뿐이에요.
방금 두 데모 안에 재귀의 요건 세 가지가 모두 숨어 있어요. 앞으로 어떤 재귀를 보든 이 세 줄로 검수하세요:
같은 일
“웹사이트 만들기”와 “홈페이지 만들기”는 같은 종류의 문제라 같은 쪼개기 수법을 쓸 수 있어요. 쪼개 나온 하위 문제가 전혀 다른 일이면 재귀는 쓸 수 없습니다.
규모가 더 작음
한 층 쪼갤 때마다 문제는 한 바퀴 작아져야 합니다: 웹사이트 → 섹션 셋 → 페이지 하나. 프랙탈 나무의 각 갈래도 이전보다 짧아요. 작아지지 않으면 영원히 쪼개지지 않습니다.
종료 조건
✋ “바로 할 수 있음”인 잎에 도달하면 멈춰야 해요. 이 조항이 제일 치명적입니다—자매편 스택 강의에서 보셨죠: 재귀가 한 층 깊어질 때마다 스택에 한 층이 쌓이고, 종료 조건이 없으면 스택 오버플로(Stack Overflow)예요.
이 강의가 전하고 싶은 것
- 재귀 = 동형 분해: 같은 수법으로, 갈수록 작아지는 같은 종류의 문제를 다룹니다
- 쪼개기는 위에서 아래로, 성과는 아래에서 위로 모임: 잎이 끝나면 초록이 뿌리까지 버블링합니다
- 3종 세트는 하나라도 빠지면 안 돼요: 같은 일, 규모가 더 작음, 종료 조건
- 종료 조건 없음 = 스택 오버플로: 자매편 스택과 호응—재귀의 매 층이 스택에 쌓입니다
- Agent 작업 쪼개기, 디렉터리 순회, 프랙탈 트리—전부 재귀의 일상 속 진짜 모습