[C언어] 백준온라인/* 재귀
[C 언어] 백준 10872. 팩토리얼
mjeong9316
2020. 1. 15. 13:37
팩토리얼은 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다.
제약사항)
시간 : 1 초
메모리 : 256 MB
문제)
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
입력)
첫째 줄에 정수 N(0<=N<=12)가 주어진다.
출력)
첫째 줄에 N!을 출력한다.
입출력 예제
입력 | 출력 |
10 | 3628800 |
풀이 순서)
재귀함수의 가장 기본이 되는 문제입니다.
1. N을 입력받아 N*(N-1) 을 N이 1이 될 때 까지 재귀함수를 이용해 계산하면 됩니다.
2. 1! 과 0! 은 값이 1이기 때문에 N이 1보다 클 때에는 N*(N-1)을, 1 또는 0일 경우에는 1을 반환하여 계산하면 됩니다.
소스코드 및 결과 (C)
#include <stdio.h>
int fact(int num) {
if (num > 1)
return num*fact(num - 1);
else
return 1;
}
int main() {
int N;
scanf("%d", &N);
printf("%d\n", fact(N));
return 0;
}
메모리 : 1112 KB
시간 : 0 ms
코드길이 : 182 B