본문 바로가기

programming language/C 언어

c언어 재귀함수의 이해

팩토리얼 값을 반환하는 함수를 재귀적으로 구현한것.

우선 팩토리얼 이란?

4! = 4 x 3 x 2 x 1 과 같다. 즉 4! = 4 x (4-1)! 이고 이는 4 x 3! 과 같다.

 

그러면  1!은? 1이다. 1!을 위와 같은 식으로 표현해 보면 1 x (1 - 1)! 이고 이는 1 x 0! 과 같다. 즉 0! = 1이 된다.

 

128행을 보면 factorial(1)이 있는데  116행의 factorial 함수에 1의 인자를 받을 int n이 있다. 이 함수에 1이 들어가면

우선, 1 * factorial( 1 - 1)이 시행이 된다. factorial(0)이 다시 호출되어 factorial(0)을 시행한다. 그런데 n ==0이면 1을 반환하므로 1이 앞으로 반환된다. 즉 1 * 1 = 1 이되어 128 행의 출력값은 1이된다.

 

131행에서는 factorial(4)가 printf문의 두번째 인자위치에 위치해있다. 다시 factorial함수로 가 시행을 하면 

1) factorial(4)는 4 * factorial(4 - 1)이 된다. 이로 인해 factorial(3)이 다시 호출이된다.

2) factorial함수에 3의 인자를 대입하게 되면 3 * factorial(3 - 1) 이 되고, 여기서 나온 값을 앞으로 반환하여 준다고 생각하면 된다.