CS 기초 · 기초
재귀 함수(Recursive Function)는 무엇이며, 재귀 함수를 작성할 때 반드시 고려해야 할 두 가지 중요한 요소는 무엇인가요?
힌트 · 재귀 함수는 함수가 자기 자신을 호출하는 방식입니다. 종료 조건(base case)과 재귀 호출(recursive step)을 명확히 정의해야 합니다.
자기_호출종료_조건스택_오버플로우기저_사례
모범답안
재귀 함수는 함수가 자기 자신을 다시 호출하는 방식으로 문제를 해결하는 프로그래밍 기법입니다. 큰 문제를 작은 부분 문제로 나누어 해결하는 데 유용하죠.
재귀 함수를 작성할 때 가장 중요한 두 가지 요소는 '종료 조건'과 '재귀 호출'입니다.
종료 조건은 재귀 호출이 멈추는 시점을 정의하는 부분입니다. 이게 없으면 함수가 무한히 자기 자신을 호출하면서 스택 오버플로우 에러가 발생할 수 있습니다. 흔히 '기저 사례(base case)'라고도 부릅니다.
재귀 호출은 함수가 자기 자신을 호출하는 부분인데, 이때 반드시 입력값을 변경해서 호출해야 합니다. 그렇지 않으면 종료 조건에 도달하지 못하고 무한 루프에 빠질 수 있습니다. 예를 들어 팩토리얼 계산 함수에서 factorial(n)을 호출할 때 factorial(n-1)과 같이 입력값을 줄여나가는 방식입니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 알고리즘 면접 질문
- 스택(Stack)과 큐(Queue) 자료구조의 정의와 각각 LIFO(Last-In, First-Out) 및 FIFO(First-In, First-Out) 원리를 설명하고, 실제 프로그래밍에서 사용되는 예를 들어주세요.
- 이진 탐색(Binary Search) 알고리즘은 어떻게 동작하며, 이 알고리즘을 사용하기 위한 데이터의 전제 조건은 무엇인가요? 시간 복잡도는 어떻게 되나요?
- 버블 정렬(Bubble Sort) 알고리즘의 동작 원리를 설명하고, 이 알고리즘의 시간 복잡도와 실제 시스템 개발에서 잘 사용되지 않는 이유를 함께 설명해주세요.
- 해시 테이블(Hash Table) 자료구조는 무엇이며, 해싱(Hashing)의 기본 원리와 충돌(Collision)이 발생했을 때 해결하는 일반적인 방법 두 가지를 설명해주세요.
- 퀵 정렬(Quick Sort)과 병합 정렬(Merge Sort)의 동작 원리를 비교하고, 각각 어떤 상황에서 더 효율적인지 시간 복잡도와 공간 복잡도 측면에서 설명해주세요.
- 특정 네트워크에서 최단 경로를 찾아야 할 때 너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS) 중 어떤 알고리즘을 선택해야 하며, 그 이유는 무엇인지 설명해주세요.