티스토리 뷰

재귀함수 (recursive function) 개념

 

리커시브는 반복이라는 뜻이다. 코딩에서 재귀함수는 특정 함수를 생성했을때 그 안에서 다시 스스로 호출하여 기능이 수행되도록 만든 개념이다.

 

만약, k까지의 합산을 구하는 펑션을 프로그래밍하기 위해서 5까지 합을 만들어내야 한다고 해보자. 만약 5 + 4 + 3의 경우, 5 + 4 의 더하기로 볼 수도 있다. 때문에 4까지의 더하기도 4 + 3 + 2 + 1 까지의 더하기라고 쓸수도 있다. k까지의 더하기를 산출하는 이 함수를 sum(k)라고 부른다면 sum 펑션의 내부에서 또 sum 펑션을 불러서 프로세스를 수행하는게 가능해지는 것이다.

 

재귀 함수는 다른 여러가지 필드에서도 찾아볼 수가 있다. 프렉탈 모형이 스스로와 유사한 패턴을 가진 작은 모형을 무한대로 반복하면서 뽑아내는 모습을 재귀의 한가지 케이스라고 볼 수 있는것처럼 말이다. 때로는 피보나치나 하노이탑 알고리즘에서도 이와같은 모습을 관찰해볼 수 있다. 해를 찾기 위해서 앞의 숫자를 그대로 뒤에서 사용하는 것을 떠올려본다면 이것 역시 재귀를 이용한 경우라는 것을 잘 알 수 있다.

 

재귀 함수는 이와같이 유사한 형태를 가진 함수를 여러번 활용할 니즈가 생겼을때 활용하는 편이다. 코딩을 할때 재귀를 이용하면 연산은 끝없이 반복된다. 만약 재귀 기능을 사용한 프로세싱을 종료시키고 싶다면 이 연산을 마무리 할 수 있는 컨디션을 줘야한다. 이것을 탈출 조건이라고 부른다. 만일 탈출을 정의해주지 않는다면 프로그램이 멈추지 않고 무한루프에 걸려들게 될 것이다.

댓글