더북(TheBook)

그림 4-2 hello( ) 함수의 재귀 호출 과정

 

재귀 호출 프로그램이 정상적으로 작동하려면 ‘종료 조건’이 필요합니다. 즉, 특정 조건이 되면 더는 자신을 호출하지 않고 멈추도록 설계되어야만 합니다. 그렇지 않으면 계속 반복하다가 재귀 에러가 나 버립니다(RecursionError가 발생합니다). 러시아 인형을 만들 때 더는 작은 인형을 만들 수 없을 만큼 작아졌는데도 계속 더 작게 만들려고 하다가는 눈과 손에 병이 날 수밖에 없는 것과 같습니다. 적당한 선에서 마지막 인형을 만들고 마무리를 지어야 합니다(기네스북에 따르면 러시아 인형 겹치기 세계 기록은 2003년에 세워진 51개라고 합니다).

재귀 호출 함수가 계산 결과를 돌려줄 때는 return 명령을 사용해서 종료 조건의 결괏값부터 돌려줍니다. 종료 조건의 결괏값은 곧 마지막으로 호출된 함수의 결괏값이므로 마지막 인형 안에 상품으로 들어 있는 사탕과 비슷한 개념입니다.

무슨 말인지 아직 감이 오지 않는다고요? 괜찮습니다. 재귀 호출은 한 번에 바로 이해하기에는 꽤 어려운 개념입니다. 팩토리얼 계산 알고리즘을 보면서 재귀 호출을 더 익혀 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.