순환이란
알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법으로
팩토리얼이 가장 대표적인 예시다.
int factorial(int n) {
if (n <= 1) return 1; // 순환을 멈추는 부분
else return (n * factorial(n-1)); // 순환을 호출하는 부분
}
순환에서 가장 중요한 점은
순환을 멈추는 부분과
순환을 호출하는 부분이 있어야 한다는 것이다.
순환 호출을 멈추는 부분이 없다면 시스템 오류가 발생할 때까지 무한정 호출하게 된다 .(StackOverflow)
그렇다면 반복 알고리즘 보다 순환 알고리즘이 더 좋은가?
상황에 따라 다른데 문제의 값을 줄일 수 있다면 순환 알고리즘
아니라면 반복 알고리즘이 좋을 수 있다.
피보나치 수열을 순환으로 실행해보면 연산 중복 현상으로 인해 효율이 떨어지기에
반복 알고리즘이 더 나은 선택이다.
이외에도 두 수의 최대 공양수를 구하는 유클리드 호제법, DFS(깊이 우선 탐색) 등에도 쓰인다.
🔖 참고자료
- C로 쉽게 풀어쓴 자료구조 - 생능출판사
'CS > 자료구조' 카테고리의 다른 글
연결리스트 (0) | 2024.07.09 |
---|---|
큐(queue)와 덱(deque) (0) | 2024.07.02 |
스택 (Stack) (0) | 2024.07.01 |
배열, 구조체, 포인터 (0) | 2024.06.28 |
자료구조의 정의 (0) | 2024.01.26 |