개념/알고리즘
재귀함수
웅드
2023. 12. 1. 20:30
자기 자신을 호출하는 함수를 재귀함수라고 한다.
재귀 호출을 너무 많이 하게 되면 스택 메모리 영역에 너무 많은 공간을 할당하게 되어 스택 오버플로가 발생할 수 있다.
종료 조건을 꼭 만들어 주어야 한다.
함수가 호출될 때 공간이 할당되고 종료하면서 해제되는 메모리 영역을 Call Stack으로 나타낸다.
함수가 호출되면서 스택 프레임이 push되고, 함수가 종료되면 스택 프레임이 pop된다.
재귀 함수는 순열과 조합을 구할 때 활용할 수 있고, 이분 탐색, DFS 등 다양하게 활용된다.
예제1 : 피보나치 수열 구하기
#include <iostream>
using namespace std;
int fibonacci(int n);
int main(){
int n;
cin >> n;
for(int i=0; i<n; i++){
cout << fibonacci(i) << " ";
}
cout << endl;
}
int fibonacci(int n){
if(n<=1)
return n;
else
return fibonacci(n-1) + fibonacci(n-2);
}
예제 2 : 팩토리얼
#include <iostream>
using namespace std;
int factorial(int n);
int main(){
int n;
cin >> n;
for(int i=1; i<=n; i++){
cout << factorial(i) << " ";
}
cout << endl;
}
int factorial(int n){
if( n <= 1)
return 1;
else
return n*factorial(n-1);
}
반응형