EXCELSIOR

Recursion의 개념과 기본 예제들 - 3 본문

Algorithms

Recursion의 개념과 기본 예제들 - 3

Excelsior-JH 2016. 11. 11. 20:20

1. 순환 알고리즘의 설계 (Designing Recursion)

  • 적어도 하나의 base case, 즉 순환되지 않고 종료되는 case가 있어야 한다.
  • 모든 case는 결국 base case로 수렴해야 한다.
  • 암시적(implicit) 매개변수를 명시적(explicit) 매개변수로 바꾸어라
    : 아래의 함수는 data[begin] 에서 data[end] 사이에서 target을 검색한다.(순차 탐색)
    즉, 검색구간의 시작점을 begin과 같이 명시적(explicit)으로 지정한다. 

① 순차탐색

 
public int search(int[] data, int begin, int end, int target){
	if(begin>end)
		return -1;
	else if(target == data[begin])
		return begin;
	else
		return search(data, begin+1, end, target);
}


② 최대값 찾기

 
public class RecursionStudy {
	public static void main(String[] args) {
		int[] data = {1,2,5,6,2,8,9};
		System.out.println(findMax(data, 2, 4));
	}
	
	public static int findMax(int[] data, int begin, int end){
		if(begin==end)
			return data[begin];
		else
			return Math.max(data[begin], findMax(data, begin+1, end));
	}
}



'Algorithms' 카테고리의 다른 글

멱집합  (2) 2016.11.21
Recursion 응용 : N-Queens Problem  (0) 2016.11.14
Recursion의 응용: 미로찾기  (0) 2016.11.11
Recursion의 개념과 기본 예제들 - 2  (0) 2016.11.10
Recursion의 개념과 기본 예제들  (0) 2016.11.09
Comments