인프런 커뮤니티 질문&답변

룰루랄라코딩생활님의 프로필 이미지
룰루랄라코딩생활

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-A : 재귀함수로 푸는 방법

재귀 함수에 어떻게 접근해야 하는지 잘 모르겠습니다.

작성

·

341

0

재귀함수를 사용해서 문제 풀이를 할 때 어떤 식으로 접근해야 할 지 팁을 주실 수 있나요?

예를 들어, 종료조건을 반드시 설정해야 하고 이에 대해 먼저 생각하고 들어가는 건 알겠습니다. 그러나 어느 부분을 재귀시킬지에 대한 감이 아직 잘 없는 것 같아요.

어느 부분을 재귀 시켜야 하는지랑, 그 외의 팁이 있으면 좀 받고싶습니다.

외워서 푸는건 되는데 이해는 아직 안돼요

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 룰루님 ㅎㅎ

기저사례는 괜찮고,

재귀를 시켜야할 메인 로직 부분이 잘 안된다는 말씀이시죠?

이부분은 정확히 재귀적 사례(Recursive Case)라고 하는데요.

문제를 하나 이상의 더 작은 하위 문제로 분할했을 때 그 하위부분을 말합니다.

즉 어떤 문제를 봤을 때 작은 문제로 분할한다면 어떻게 될 것인가에 초점을 맞춰 코드를 구축하면 됩니다.

예를 들어 피보나치의 경우

1, 1, 2, 3, 5, 8, 13...

으로 크게 다 더할 수 있지만 이거를 세분화를 시켜보면.

다음과 같은 점화식이 나옵니다.

F(n) = F(n-1) + F(n-2)

F(0) = 0, F(1) = 1 (기본 사례)

이렇듯 그 전, 전전 단계를 더한다. 라는 로직으로 하위문제를 나눌 수 있고 앞의 점화식을 기반으로.

int fibonacci(int n) {
    // 기본 사례
    if (n == 0) return 0;
    if (n == 1) return 1;
    // 재귀적 사례
    return fibonacci(n-1) + fibonacci(n-2);
}

앞의 코드와 같은 것을 구축할 수 있는 것이죠.

 

또한 재귀 함수의 매개변수를 출력하는 부분을 넣어서 디버깅 걸어서 중간 결과를 출력하여 함수 호출이 올바르게 진행되고 있는지 확인하면서 로직을 구축하는 것도 하나의 팁입니다.

 

외워서 푸는건 되는데 이해는 아직 안돼요

>> 외워서 푸는 것도 괜찮습니다. 그러다보면 이해가 되는 단계까지 이어지실겁니다. 잘하고 계십니다.

 



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

0

안녕하세요, 인프런 AI 인턴입니다.

재귀함수란 함수가 자기 자신을 다시 호출하는 것을 말합니다. 이는 특히 트리나 그래프 탐색, 동적 프로그래밍 문제 등에서 매우 유용하게 쓰입니다. 재귀 함수를 이해하고 사용하는 데 있어 몇 가지 중요한 점이 있습니다.

  1. 종료 조건 설정: 재귀 함수를 사용할 때 가장 중요한 것 중 하나는 종료 조건, 즉 재귀 호출이 언제 멈출지를 명확하게 정의하는 것입니다. 종료 조건이 없다면 함수는 무한히 자기 자신을 호출하게 되어 프로그램이 제대로 작동하지 않게 됩니다.

  2. 재귀 로직 이해: 재귀 함수에서는 자기 자신을 호출하는 부분이 핵심입니다. 이때, 같은 문제지만 규모가 작은 부분 문제를 해결하는 방식으로 접근합니다. 예를 들어, 팩토리얼 계산이나 피보나치 수열 계산과 같은 경우가 이에 해당합니다.

  3. 기저 사례 식별: 재귀 함수의 기저 사례(base case)는 재귀 호출 없이 답을 바로 알 수 있는 가장 간단한 경우입니다. 이를 통해 재귀 호출의 깊이를 제한하고 반드시 종료 조건으로 수렴하게 합니다.

위의 내용에 대해 더 심도 있는 설명을 찾고 계신다면, 이미 지식공유자께서 유튜브 채널을 통해 자세한 강의를 제공하고 계십니다. 재귀 함수에 대한 좀 더 구체적인 예시와 설명을 원하신다면, 아래 링크를 참고하시길 바랍니다.

  • “재귀함수 이해하기”: 이 영상에서는 재귀 함수의 기초적인 개념부터 시작하여, 실제 예제를 통해 재귀 함수가 어떻게 동작하는지 설명하고 있습니다.

또한, 재귀 함수의 이해를 돕기 위하여 다양한 알고리즘 문제를 풀어보시는 것을 추천합니다. 문제를 통해 재귀 함수의 다양한 적용 사례를 실습하며, 점차 감을 잡아가는 것이 중요합니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

룰루랄라코딩생활님의 프로필 이미지
룰루랄라코딩생활

작성한 질문수

질문하기