프로그래밍/C 기초

[C언어 강좌] #29 재귀함수 예제

도끼_Dokki 2017. 1. 4. 09:00

오늘은 재귀함수를 예제와 함께 설명해보려합니다.

재귀함수로 만들수잇는 대표적인 예제로는 팩토리얼이 있습니다.

확률과 통계 과목에서 배우셨을거라 생각합니다. 1부터 n까지 순서대로 곱하는것이 팩토리얼이죠.


3! = 3x2x1

이런식으로 말입니다.


근데 팩토리얼에서도 재귀적인 특징을 볼수있죠.


5! = 5x4!


4! = 4x3!


3! = 3x2!


2! = 2x1!


1! = 1x0!


어떤가요? 재귀적인 특징이 보이시나요? 팩토리얼에서 계속 또다른 팩토리얼을 부르고있습니다.

참고로 0! 은 1입니다.


팩토리얼을 구하는 함수가 있다고 했을때 5팩토리얼을 구할때는 5와 4팩토리얼 함수의 반환값을 곱해주면 됩니다.

그리고 4팩토리얼 함수는 4와 3팩토리얼 함수의 반환값을 곱해주면 됩니다.

그리고 재귀함수가 무한루프에 빠지지 않도록 끝이 있어야합니다. 그게 바로 0!이 되겠죠.





그것을 코드로 짠다면 위 예제처럼 만들어볼수 있겠죠.

출력 결과를 보니 정상적으로 작동합니다.




3!을 구하려고 함수를 호출했을때 실행순서는 위와 같이 그려볼수 있습니다.

n이 0이될때까지 계속해서 자기 자신을 호출하고 그 반환값을 곱해서 다시 반환하는것을 반복합니다.

결국 1부터 n까지 순서대로 곱한값이 나오게 되겠지요.


이 예제는 코드를 아는것보단 실행구조를 이해하는것이 중요합니다.