728x90
반응형
Recursive Thinking 순환적 사고하기
Recursion은 수학함수 계산에만 유용한가?
-> 다른 많은 문제들도 해결할 수 있다.
- 문자열의 길이 계산
public static int length(String str) {
if(str.equals("")) // base case
return 0;
else
return 1+length(str.substring(1));
}
- 문자열의 프린트
public static int printChars(String str) {
if(str.equals("")) // base case
return 0;
else {
System.out.print(str.charAt(0));
return 1+length(str.substring(1));
}
}
- 2진수 변환 출력
public static int printInBinary(int n) { // 2진수 변환 출력
if(n<2)
System.out.print(n);
else {
printInBinary(n/2);
System.out.print(n%2);
}
}
- 배열의 합 구하기
public static int sum(int n, int data[]) {
if(n<=0) return 0;
else {
return sum(n-1, data)+data[n-1);
}
}
Recursion vs Iteration
- 모든 순환함수와 반복문은 서로 표현이 가능하다.
- 순환함수는 복잡한 알고리즘을 단순, 알기쉽게 표현하는 것을 가능하게 함
- but 함수 호출에 따른 오버헤드 있음 (매개변수 전달, 액티베이션 프레임 생성 등)
경우에 따라 순환함수로 단순히 표현해야 하는 경우도 있기 때문에 사용한다.
Q. 액티베이션 프레임 생성 ?? -> 검색해도 안나온다. 누가 알려주세요 ㅠㅠ
728x90
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘/인프런정리] 2-2. Recursion의 응용: Counting cell in a Blob (0) | 2020.10.05 |
---|---|
[알고리즘/인프런정리] 2-1. Recursion의 응용: 미로찾기 (0) | 2020.10.04 |
[알고리즘/인프런정리] 1-3. Designing Recursion (0) | 2020.10.03 |
[알고리즘/인프런정리] 1-1. Recursion 1 (0) | 2020.09.29 |
[알고리즘/dp] 백준 2193번 이친수 (0) | 2019.03.12 |