PS/재귀[Recursion]

재귀(recursion) 개념정리

SeungbeomKim 2022. 8. 4. 17:54
반응형

재귀 함수

  • 자기 자신을 호출하는 함수
  • Base Case : 간단히 결과를 반환하는 부분
  • Recursive Case : 자기 자신을 호출하는 부분

factorial - n==0 n! =1 // Base Case

                n>0   n! = n * (n-1)! // Recursive case

 

재귀를 활용한 flood fill 알고리즘

<코드>

#include <iostream>
using namespace std;
int n, Board[100][100];
void fill(int r,int c)
{
	if(r<0 || r>n-1 || c<0 || c> n-1) return; //경계면을 벗어나면 return 
	if(Board[r][c]) return; //벽이 있으면 return  
	Board[r][c] = 1;  
	fill(r-1,c);//위 
	fill(r+1,c);//아래 
	fill(r,c-1);//왼쪽 
	fill(r,c+1);//오른쪽 
}
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cin>>Board[i][j];
		}
	}
	int sr,sc;
	cin>>sr>>sc;
	fill(sr,sc);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			cout<<Board[i][j]<<' ';
		}
		cout<<'\n';
	}
	return 0;
}

<참고자료>

https://www.youtube.com/watch?v=Rs7Hz39hp5U&list=PL6YHvWRMtz7DS3hVaqMazHujPcKVfblQa&index=2 

 

반응형

'PS > 재귀[Recursion]' 카테고리의 다른 글

백준 14888 연산자 끼어넣기(c++)  (0) 2023.01.28