팩토리얼은 단순 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
'[C언어] 백준온라인 > * 재귀' 카테고리의 다른 글
[C 언어] 백준 11729. 하노이 탑 이동 순서 (0) | 2020.01.15 |
---|---|
[C 언어] 백준 2447. 별 찍기 - 10 (1) | 2020.01.15 |
[C 언어] 백준 10870. 피보나치 수 5 (0) | 2020.01.15 |