CS/자료구조

순환

Meluu_ 2024. 1. 26. 20:35

 

순환이란 

알고리즘이나 함수가 수행 도중에 자기 자신을 다시 호출하여 문제를 해결하는 기법으로

 

팩토리얼이 가장 대표적인 예시다.

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