본문 바로가기
Algorithm

Recursion Function(재귀 함수)

by 곰제비 2022. 6. 20.

재귀함수란?

  • 함수를 정의할 때 자신을 재참조하는 함수
  • 계속해서 자기 자신의 함수를 호출하며 같은 로직을 반복해나가고 인덱스를 변화시켜 진행되는 문제에서 사용
  • ex) 피보나치
F(0) = 0, F(1) = 1 이며 N>=2일 때 F(N) = F(N-1) + F(N-2)

코드로 구축했을 때

#include <bits/stdc++.h> 
using namespace std;  
int fibo(int idx){
	if(idx == 0 || idx == 1) return idx; 
	return fibo(idx - 1) + fibo(idx - 2);
} 

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cout << fibo(10);  // 55
    return 0;
}
  • 재귀함수는 크게 기저사례메인로직으로 나뉜다.

기저사례

  • 탈출할 조건, 즉 종료조건을 의미한다.
  • 재귀함수를 구축할 때는 기저사례를 가장 먼저 작성한다.
  • 위 코드에서의 기저사례
if(idx == 0 || idx == 1) return idx;

메인로직

  • 위 코드에서의 메인 로직
return fibo(idx - 1) + fibo(idx - 2);

'Algorithm' 카테고리의 다른 글

DFS(깊이 우선탐색)  (0) 2022.06.24
Prefix sum(누적합)  (0) 2022.06.20
Time Complexity(시간 복잡도)  (0) 2022.06.20
Selection Sort(선택 정렬)  (0) 2022.06.14
GCD(최대공약수), LCM(최소공배수) C++ 구현  (0) 2022.06.14