순환 : 수행도중 자기 자신을 호출해서 문제를 해결
- 정의 자체가 순환적일때 사용
- 예) 팩토리얼 구하기, 피보나치 수열, 하노이탑, 이진 탐색, 병합 정렬, 트리, 자료구조, 프랙털 등
- 무한 호출시, ,StackOerflow Error 발생
- 따라서 자기자신 호출시, 무한 호출 방지해야 함
순환 메소드의 구성
- 기본 케이스 : 스스로를 더이상 호출하지 않는 부분
- 순환 케이스 : 스스로를 호출하는 부분
무한 호출 방지를 위해
변수 또는 수식의 값이 호출시마다
순환 case에서 감소되어
최종적으로 기본 case를 실행하도록 제어해야 함
(메소드의 마지막 부분에서 순환하는)꼬리 순환은 반복문으로 변환하는 것이 효율적
순환은
프로그램의 가독성을 높일 수 있는 장점을 갖지만,
시스템 스택 사용으로 메모리 사용 측면에서는 비효율적이다.
'개발 > 자료구조' 카테고리의 다른 글
1-4 자바 언어에 대한 기본적인 지식 (0) | 2022.03.16 |
---|---|
1-3 수행시간의 점근표기법 (0) | 2022.03.12 |