티스토리 뷰

모각코

모각코 5일차 결과 (2. 10)

khe0616 2019. 2. 10. 18:55

인프런에서 권오흠 교수님의 알고리즘 강좌를 듣고 필기한 내용이다.

수강한 파트는 Recursion이다.




Recursion이 무한 루프에 빠지지 않으려면..

1. Base case : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야 한다.

2. Recursvie case : recursion을 반복하다보면 결국 base case로 수렴해야 한다.


ex)

public class Code02{

    public static void main(String[] args){

        int n = 4;

        func(n);

    }

}


public static void func(int  k){

    if (k <= 0){ <- Base case

        return;

    }else{ <- Recursvie case

        System.out.println("Hello...");

        func(k-1);

    }

}



---------------------------------------------------------------------------------------------------------------------

Recursvie Thinking


수학 함수뿐 아니라 다른 많은 문제들을 recursion으로 해결할 수 있음

1. 문자열의 길이 계산, 문자열의 프린트, 문자열을 뒤집어 프린트

2. 2진수로 변환하여 출력

3. 배열의 합 구하기

4. 데이터파일로부터 n개의 정수 읽어오기



Recursion VS Iteration

- 모든 Recursive 함수는 반복문(iteration)으로 변경 가능

- 그 역도 성립함. 즉 모든 반복문은 recursion으로 표현 가능

- Recursive function은 복잡한 알고리즘을 단순하고 알기 쉽게 표현하는 것을 가능하게 한다.

  그러나, 함수 호출에 따른 오버헤드가 존재한다. (매개 변수 전달, 스택 프레임 생성 등)



---------------------------------------------------------------------------------------------------------------------

Designing Recursion



Recursion Algorithm 설계

- 적어도 하나의 base case, 즉 순환되지 않고 종료되는 case가 있어야 함

- 모든 case는 결국 base case로 수렴해야 함



암시적(implicit) 매개변수를 -> 명시적(explicit) 매개변수로 바꾸어라

1, 순차탐색

2. 최대값 찾기

3. Binary Search



'모각코' 카테고리의 다른 글

모각코 6일차 결과 (2. 12)  (1) 2019.02.13
모각코 6일차 목표 (2. 12)  (0) 2019.02.12
모각코 5일차 목표 (2. 10)  (1) 2019.02.10
모각코 4일차 결과 (1.31)  (1) 2019.01.31
모각코 4일차 목표 (1.31)  (0) 2019.01.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함