링크
https://www.acmicpc.net/problem/27433
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
첫째 줄에 정수 N(0 ≤ N ≤ 20)이 주어진다.
첫째 줄에 N!을 출력한다.
10
3628800
0
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;
}
정리가 잘 된 글이네요. 도움이 됐습니다.