[C] 백준 27433번 팩토리얼 2

김진웅·2023년 8월 7일
1

baekjoon-study

목록 보기
4/59
post-thumbnail

링크
https://www.acmicpc.net/problem/27433

문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1

10

예제 출력 1

3628800

예제 입력 2

0

예제 출력 2

1

아이디어 스케치

팩토리얼 문제는 재귀 함수를 이용하는 대표적인 문제로 재귀 알고리즘을 이용하면 될 것 이다.
주어지는 N의 값은 0~20으로 20!일 때 값이 2432902008176640000 이 정도로 어마어마 하게 큰 수가 나온다. 즉 int형으로는 어림도 없기 때문에 long long을 써야한다.

코드 분할 설명

long long int factorial(long long int n)
{
    if(n==0)
        return 1;
    else
        return n*factorial(n-1);
}

재귀함수는 탈출문이 없는 경우 무한으로 함수를 스택으로 호출하기 때문에 탈출 조건을 명시해줘야 한다. n이 0일 때 1을 return하고 종료시키는 조건을 넣었다.
n이 0이 아닐 경우에는 return n*factorial(n-1)을 통해 자기 자신을 계속해서 호출한다.

전체 코드

#include <stdio.h>

long long int factorial(long long int n)
{
    if(n==0)
        return 1;
    else
        return n*factorial(n-1);
}

int main()
{
    long long int num;

    scanf("%lld",&num);

    printf("%lld",factorial(num));

    return 0;
}

제출 결과

profile
IT Velog

2개의 댓글

comment-user-thumbnail
2023년 8월 7일

정리가 잘 된 글이네요. 도움이 됐습니다.

1개의 답글