티스토리 뷰

Algorithm

Recursive_Sequence

Dev gOm 2016. 9. 6. 20:29

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
링크
«   2025/04   »
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
글 보관함