팩토리얼이란 숫자! 라는 기호로 나타낼수 있는데, 이 뜻은
n! 일 경우 1부터 n 까지의 수를 모두 곱한값이란 뜻이다.
고로 만약 5! 인경우 값은 1*2*3*4*5 = 120 이다.
이를 재귀함수로 구현하면, 함수안에서 리턴할때 n-1 값을 다시 호출하면 되는데,
이를 구현하면 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <stdio.h> int fact(int n); int main(void) { int c; scanf("%d", &c); printf("%d", fact(c)); } int fact(int n) { if(n==1) return n; else return n*fact(n-1); } | cs |
코드를 설명하자면 면저 함수 fact 의 프로토타입을 선언해주었고,
C값을 입력받아 팩토리얼의 인자로 넘겼다.
팩토리얼 내부에서는 C가 N 에 복사되어 N 을 가지고 비교할테고,
N 이 1이 아니니, N이 1이 될때까지 N * n-1 *n-2*n-3.... 을 반복하다가
N 이 1이되면 1을 반환하여
만약 c에 5를 입력했다고 하면,
5 * 4 *3 * 2 * 1 식의 순서로 연산이 된다.
'C' 카테고리의 다른 글
[C언어]재귀 - 삼각형 출력 (0) | 2016.03.29 |
---|---|
[C언어]재귀 - 각 자리수의 합 (0) | 2016.03.28 |
[C언어] 함수 - 계산기 (0) | 2016.03.28 |
2의n승 (0) | 2016.03.28 |
다차원배열과제 (0) | 2016.03.28 |