int f(int n) { if(n == 0)return 1; else return n * f(n - 1); } void main() { int su; x: printf("팩토리얼을 구할 수를 입력해 주세요 : "); scanf("%d", &su); if(su < 0) { printf("잘못된 범위를 입력하셨습니다.!\n\n"); goto x; } printf("%d\n", f(su)); }
프로그램 실행화면
재귀함수를 이용해서 계승 즉 팩토리얼을 구하는 프로그램이다. 재귀함수는 항상 끝나는 조건이 있어야 한다. 그 시점이 n이 0이 되는 순간이다.
4를 입력 했기 때문에 이를 쉽게 식으로 풀어 본다면 4 * (4 - 1) * (4 - 2) * (4 - 3) * 1이 될 것이다.
main()함수에서 f()함수를 호출하듯이 현재 프로그램이 실행하고 있는 함수 내에서도 그 함수를 호출할 수 있는 것이다.
자료구조에서 나오는 스택을 알고 있으면 조금 더 쉽게 이해할 수 있을 것이다.