본문 바로가기
C

[c언어] 재귀 - 팩토리얼

by stdlib.h 2016. 3. 28.

팩토리얼이란 숫자! 라는 기호로 나타낼수 있는데, 이 뜻은

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