재귀 입문
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 47번째.
재귀는 함수가 문제를 해결하기 위해 자기 자신을 호출하는 프로그래밍 기법입니다. 서로 마주 보는 두 개의 거울을 들여다보는 것과 같다고 생각해 보세요. 각각의 반사된 이미지는 같은 이미지의 더 작은 버전을 포함하고 있으며, 반사된 이미지가 너무 작아서 보이지 않을 때까지 무한 루프를 생성합니다.
모든 재귀 함수가 제대로 작동하려면 두 가지 필수 구성 요소가 필요합니다. 기본 케이스(base case)는 재귀를 중단시키는 조건입니다. 이는 마치 거울의 반사가 너무 작아져서 더 이상 의미가 없어지는 지점과 같습니다. 기본 케이스가 없으면 함수는 자신을 영원히 호출하게 되어 결국 프로그램을 중단시키게 됩니다.
재귀 단계(recursive step)는 함수가 원래 문제의 변형된 버전을 사용하여 자기 자신을 호출하는 부분입니다. 함수가 자기 자신을 호출할 때마다 더 작거나 단순한 버전의 문제를 처리해야 하며, 점진적으로 기본 케이스(base case)를 향해 나아가야 합니다.
종이 더미에서 열쇠를 찾고 있다고 상상해 보세요. 맨 위의 종이를 확인하고, 거기에 열쇠가 없다면 남은 더미(이제 종이가 한 장 줄어든 상태)에 대해 똑같은 작업을 수행할 것입니다. 열쇠를 찾거나 더 이상 확인할 종이가 남지 않을 때까지 이 과정을 계속 반복하게 됩니다.
큰 문제를 더 작고 동일한 문제들로 나누는 이러한 접근 방식은 특정 유형의 프로그래밍 과제에서 재귀를 매우 강력하게 만드는 요소입니다.
치트 시트
재귀(Recursion)는 문제를 더 작고 동일한 문제로 나누어 해결하기 위해 함수가 자기 자신을 호출하는 프로그래밍 기법입니다.
모든 재귀 함수에는 두 가지 필수 구성 요소가 필요합니다:
기본 케이스(Base case): 무한 루프를 방지하기 위해 재귀를 중단하는 조건입니다.
재귀 단계(Recursive step): 함수가 원래 문제의 수정된 버전으로 자기 자신을 호출하여 점진적으로 기본 케이스에 도달하는 단계입니다.
직접 해보기
이 레슨에는 코드 챌린지가 없습니다.
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구