본문 바로가기

Dev-/자료구조, 알고리즘

재귀함수의 쓰임은 무한루프만??

참조: 재귀함수가 무한루프에 빠지지 않기 위한 조건 2가지



재귀함수가 성립되기 위한 조건들을 보시면,

수학에서의 귀납법과 굉장히 닮아있다는 것을 알 수 있습니다.



귀납법은 어떤 명제를 증명하기 위한 하나의 방법론으로


1. n = 1-> 명제가 성립함을 확인

2. n = k - 1 명제가 성립함을 가정 -> n = k 명제가 성립함을 확인

---> 1, 2가 성립하면 해당 명제는 참!


뭐 대강 이런식인데,

재귀함수의 성립 조건과 상당히 닮아 있습니다.




고로, 

대부분의 문제를 해결할수 있습니다.

여기엔 반복문도 포함해, 정말 대부분의 문제가 해결 가능합니다.


굳이 이렇게 언급하는 이유는,,,


재귀함수라 하면

대부분 무한루프와 관련된, 혹은 비슷한 문제만 

해결가능할 것이라고 생각하기 때문입니다.




어떠한 문제가 주어졌을 때,

대강 그 문제의 첫번째 케이스재귀함수가 수렴할 케이스로 지정한 후,

그 이외의 상황에 대해 로직을 잘 짜게 되면(첫번째 케이스수렴 + 문제 해결)


간단한 코드로 문제를 해결할 수 있습니다.



직관적으로 잘 안떠오르는 것이 문제지만,,

연습만 조금 한다면 유용할 것 같습니다.




아주 조금이지만,, 

생각을 넓힐 수 있는 두가지 예시를 보여드리겠습니다.


매개변수로 문자열이 주어졌을 때,

1. 순서대로 한자씩 출력

2. 역순으로 한자씩 출력



우선 순서대로 출력하는 케이스는 아래와 같습니다.


정순


그리고 역순으로 출력하는 케이스는,, 


역순


딱 하나 출력 부분의 선언 위치만 다릅니다.



한번 생각해보시면 좋을 듯 합니다.

'Dev- > 자료구조, 알고리즘' 카테고리의 다른 글

동적 계획법, 동적 프로그래밍  (0) 2019.01.12
2581번) 소수  (0) 2018.09.27
재귀함수가 무한루프에 빠지지 않기 위한 조건 2가지  (0) 2018.09.10
시간복잡도란?  (0) 2018.09.10
정규화란?  (0) 2018.08.25