//숫자 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!에 대한 답을 구해주면될 듯.
'SW 업무 관련 > 기타' 카테고리의 다른 글
[알고리즘][C언어][C++] 더블 링크드 리스트 (0) | 2021.03.15 |
---|---|
[알고리즘][c언어][c++] 링크드 리스트 (0) | 2021.03.10 |
배열 구간의 합 구하기 (0) | 2019.06.08 |
[2] DFS 재귀함수 연습.// 피보나치 수열. (0) | 2017.03.05 |