티스토리 뷰
# 개념
- 순환 또는 재귀함수.
- Recursive 메서드는 자기 자신을 호출한다.
- Resursive 메서드는 Base Case와 Recursive Case를 가져야 한다.
-Base Case : Recursion을 벗어나는 경우
-Recursive Case : 자기 자신을 호출하는 경우. 최종적으로 Base Case로 수렴해야 한다.
# 예제
n까지의 합계 구하기
const sum = n => {
if (n <= 0) return 0;
else return n + sum(n-1);
}
Factorial: n! 구하기
const factorial = n => {
if(n == 0) return 1;
else return n * factorial(n-1);
}
피보나치 수 구하기
const fibonacci = n => {
if(n < 2) return n;
else return fibonacci(n-1) + fibonacci(n-2);
}
최대공약수(GDC), 최소공배수(LCM) 구하기
// GCD
const gcd = (a, b) => {
if(b === 0) return b;
else return gcd(b, a%b);
}
// LCM
const lcm = (a, b) => {
return a*b / gcd(a, b);
}
멱집합 구하기
const data = ['a','b','c','d','e'];
const len = data.length;
const include = new Array[len].fill(false);
const powerSet = k => {
if(k === len){ // 리프 노드라면
data.forEach((v, i) => {
if(include[i]) console.log(v);
});
return;
}
include[k] = false;
powerSet(k+1); // 왼쪽 노드 탐색
include[k] = true;
powerSet(k+1); // 오른쪽 노드 탐색
}
'컴퓨터 공학 > 알고리즘' 카테고리의 다른 글
[프로그래머스][동적계획법]정수 삼각형 (0) | 2019.09.04 |
---|---|
[프로그래머스][이분탐색]예산 (0) | 2019.08.27 |
[프로그래머스][Lv1]행렬의 덧셈 (0) | 2019.08.11 |
[프로그래머스][Lv1]최대공약수와 최소공배수 (0) | 2019.08.11 |
[프로그래머스][정렬]H-Index (0) | 2019.08.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스[이분탐색]
- 프로그래머스
- Docker
- javascript
- 실행 문맥
- PostgreSQL
- 프로그래머스[힙]
- JPA
- 프로그래머스[Lv1]
- 프로그래머스[해시]
- Pipeline
- 동적계획법
- Nashorn
- react
- 프로그래머스[스택/큐]
- Spring Boot
- 웹 사이트 최적화
- Handshake
- typescript
- 프로그래머스[정렬]
- CRP 최적화
- Kubernetes
- Web
- Jenkins
- CD
- CI
- execution context
- Apollo
- graphql
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함