패스잇
CS 기초 · 기초

재귀(Recursion)와 반복(Iteration)의 차이점과 변환 방법에 대해 설명해주세요.

힌트 · 스택 오버플로우, 꼬리 재귀 최적화를 생각해보세요.

스택종료 조건메모리 사용량시간 복잡도꼬리 재귀

모범답안

면접관님, 재귀와 반복은 둘 다 코드를 반복적으로 실행하는 방법이지만, 작동 방식에 차이가 있습니다.

재귀는 함수가 자기 자신을 호출하는 방식입니다. 장점은 코드가 간결하고 가독성이 좋을 수 있다는 점입니다. 하지만 함수 호출 시 스택에 메모리를 계속 쌓기 때문에 스택 오버플로우가 발생할 위험이 있고, 반복에 비해 일반적으로 성능이 떨어집니다. 반드시 종료 조건을 명확하게 설정해야 무한 루프를 방지할 수 있습니다.

반복은 forwhile 같은 반복문을 사용하여 코드를 반복합니다. 재귀에 비해 메모리 사용량이 적고 성능이 좋은 경우가 많습니다.

재귀를 반복으로 변환하는 것은 가능합니다. 스택을 직접 사용하여 재귀 호출을 흉내 내거나, 꼬리 재귀 최적화가 가능한 경우에는 반복문으로 쉽게 변환할 수 있습니다. 반대로, 반복문을 재귀 함수로 바꾸는 것도 가능하지만, 가독성이 떨어질 수 있습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 자료구조 면접 질문

← 자료구조 면접 질문 전체 보기