n!은 1부터 n까지의 자연수를 모두 곱한 수를 의미한다. 참고로 0!은 1이다.
int fac(int n)
{
if (n == 0)
return 1;
else
return n * fac(n - 1);
}
int n = int.Parse(Console.ReadLine());
Console.Write(fac(n));
팩토리얼과 피보나치는 재귀를 처음 접하는 사람들에겐 정말 안성맞춤인 문제들이다.
점화식이 어렵지 않아 다양한 변형 문제들을 풀어보면서 자연스레 반복문으로 바꿔보기도 하고 mod 연산이나 메모이제이션 등을 익힐 수도 있다.
위 문제는 입력이 한 줄만 주어지기 때문에 따로 메모이제이션은 필요 없다.
반복문으로 바꿔쓴다면 아래 코드가 될 것이다.
int n = int.Parse(Console.ReadLine());
int ans = 1;
for (int i = 1; i <= n; i++)
{
ans *= i;
}
Console.Write(ans);
'문제 풀이 > 백준' 카테고리의 다른 글
백준 11729 C#) 하노이 탑 이동 순서 (0) | 2022.05.19 |
---|---|
백준 17478 C#) 재귀함수가 뭔가요? (0) | 2022.05.12 |
백준 9020 C#) 골드바흐의 추측 (0) | 2022.05.07 |
백준 1929 C#) 소수 구하기 (0) | 2022.05.07 |
백준 11653 C#) 소인수분해 (0) | 2022.05.06 |
댓글