티스토리 뷰
Explain
- 수열의 합을 구하기 위한 방법 정리.
- 문제 해결 시 Recursive한 해결 방법을 찾아내기 위한 노력할 것.
- Iteration, Recursion 2가지 방식으로 풀이 후 비교.
- 문제 해결 시점에서 Iteration, Recursion 각각의 방법을 도출한 뒤 최적의 방법을 선택할 것.
- 문제마다 Iteration방식이 최적 일수도 있고 Recursion 방식이 최적일 수가 있다.
$$S(n) = \sum_{i=1}^{n}i = 1 + 2 + ... + n $$
Iteration
//Iteration method.
int S_Iteration(int n)
{
int i;
int sum = 0;
for(i = 1; i <= n ; ++i)
{
sum += s + i;
}
return sum;
}
Recursion
$$ S(n) = \begin{cases} 0 \text{ if n <= 0 }\\ S(n-1) + n\text{ if n > 0 }\end{cases} $$
- 0과 같거나 작은경우 0
- 0보다 큰경우 \(S(n-1) + n\) 이 성립한다.
//Recursion method.
int S_Recursion(int n)
{
if(n <= 0) return 0;
return S_Recursion(n-1) + n;
}
Time Complexity
- Iteration : \(O(n)\)
- Resursion : \( T(n) = \begin{cases} 1 \text{ if n <= 0 }\\ T(n-1) + n \text{ if n > 0 } \end{cases} \)
- 0과 같거나 작을경우 \(T(n) = 1\)
- 0보다 클경우 \(T(n) = T(n-1) + 1\)
Reference
'Algorithm' 카테고리의 다른 글
4673_셀프 넘버 (0) | 2016.10.05 |
---|---|
1065_한수 (0) | 2016.10.05 |
Matrix multiplication 행렬의 곱셈 (0) | 2016.09.19 |
Matrix 행렬 (0) | 2016.09.19 |
Recursive_Fibonacci Sequence (0) | 2016.09.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 안드로이드
- Bit
- 비트
- 행렬
- 비트연산자
- Kotlin
- Highlighter
- Android
- highlightjs
- mathjax
- syntax highlighting
- DNS
- Math
- 삼항연산자
- 수식
- Matrix
- robocopy
- 도메인
- 알고리즘
- python
- C
- 비트마스크
- mysql
- algorithm
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함