[1] DFS 재귀함수 연습.// 팩토리얼

SW 업무 관련/기타

[1] DFS 재귀함수 연습.// 팩토리얼

WillBe_ 2017. 3. 5. 15:05

//숫자 n을 입력받아 n!를 출력하는 예제.

//재귀함수를 이용한다.


#include <stdio.h>


int factorial(int n)

{

if (n == 1) return 1;


return n*factorial(n - 1);

}


int main()

{

int n;


printf("숫자를 입력하세요.");

scanf_s("%d", &n);


printf("%d", factorial(n));


return 0;

}


예로 n에 5를 대입하면 factorial 함수 호출.


1. return n*factorial(n - 1); -> 5*factorial(4); 여게서 factorial(4)  호출.

2. return 4*factorial(3); 여기서 factorial(3) 호출.

3. return 3*factorial(2); 여기서 factorial(2) 호출;

4. return 2*factorial(1); 여기서 factorial(1) 호출.

5. n==1이면 1을 반환하므로 1을 반환.

6. 4에서 2*1반환

7. 3에서 3*2반환

8. 2에서 4*6반환

9. 1에서 5*12반환


답 120


//0!는 1이므로 factorial 함수나 main함수에서 조건문으로 0!에 대한 답을 구해주면될 듯.