본문 바로가기

Algorithm

recursive(1)

 

Recursion

-        자기 자신을 호출하는 함수(메서드)

-        통제를 통해 무한루프에 빠지지 않게   있다

 

무한통제 방지 구조

-        적어도 하나의 recursion 빠지지 않는 경우가 존재해야한다 -> base case

-        Recursion 반복하다보면 결국 base case 수렴해야한다

 

대표적인 예시

1)     팩토리얼

2)     피보나치수열

3)     최대공약수

M>=N  양의 정수 M N 대해서 M N 배수이면 gcd(M,N) = N이고, 그렇지 않으면 gcd(M,N) = gcd(n,M%N)이다.

코드)

Public static double gcd(int m, int n){
  If(m<n){
    int tmp =m; m = n; n= tmp;
If(m%n==0){
  return n;
}else{
  return gcd(n,m%n);
}
}

 

Recursion 응용

1)     미로찾기

-        이미 방문한 위치와 방문하지 않은 위치를 남겨야함

-        현재 위치가 출구이거나 인접한 곳에서 출구로   있는 길이 있어야함

 

0 -> 

1-> 

2-> 가봤지만 목표지점까지   없는 곳임이 확인된 

3-> 가봤지만 목표지점까지   있는지 없는지 여부 확인 X

2)Counting cells in a Bloob

-현재 픽셀이 image color 아니면 0 반환

-현재 픽셀이 Image color라면 현재 픽셀 카운트

-중복 카운트 되는 것을 방지하기 위해 다른 색으로 칠한다

-현재 픽셀에 이웃한 모든 픽셀들에 대해서  픽셀이 속한 blob 크기를 카운트하여 카운터에 더해준다

 

3) N queens Problem

 

'Algorithm' 카테고리의 다른 글

Heap  (0) 2022.09.13
Greedy  (0) 2022.06.21
최소공배수와 최대공약수  (0) 2022.06.19
스택으로 재귀함수를 비재귀적으로 구현하기  (0) 2022.06.18
재귀 알고리즘  (0) 2022.06.18