Algorithm

순환과 반복

ppwag 2020. 5. 28. 02:29

순환

순환(recursion)이란, 하나의 함수에서 자기 자신을 다시 호출하여 작업을 수행하는 프로그래밍 기법이며 '재귀' 와 같은 말이다.

순환은 본질적으로 순환적이게 정의된 문제나 자료 구조를 다루는 프로그램에 적합하다.

원리

자기 자신을 다시 호출하는 것은 다른 함수를 새롭게 호출하는 것과 동일하다. 복귀주소가 계속해서 시스템 스택에 쌓이고 새로운 지역변수를 스택으로부터 할당받는다.

순환 호출이 일어날 때 마다 문제의 크기가 작아진다. 이러한 문제 해결 방법을 분할 정복(divide and conquer) 이라고 한다.

특징

반복 알고리즘에 비해 알고리즘을 명확, 간결하게 나타낼 수 있는 장점이 있지만 연속적인 함수 호출로 인해 같은 효율에서 보다 수행속도가 떨어진다.

거의 모든 프로그래밍 언어에서 순환을 지원하지만 지역 변수 개념이 없거나 있더라도 정적(static)으로 할당되는 특정 언어들(FORTRAN, COBOL, BASIC)는 순환이 불가능하다.

예시

반복

프로그래밍 언어를 배울 때 처음 접하는 개념 중 반복문이 이에 해당된다.

순환보다 수행속도는 빠르지만 알고리즘이 매우 복잡해질 수 있다.

예시

'Algorithm' 카테고리의 다른 글

하노이탑 함수  (0) 2020.06.05
피보나치 함수  (4) 2020.05.31
거듭제곱 함수  (0) 2020.05.30
팩토리얼 함수  (0) 2020.05.28
빅오 표기법  (0) 2020.05.26

댓글