백준 10872번: 팩토리얼

https://www.acmicpc.net/problem/10872

 

처음에는 어라 이거 그냥 for문 때리면 되는 거 아닌가 하고

#include <iostream>
using namespace std;

int main()
{
	int N;
	int n = 1;
	cin >> N;

	if (N != 0)
	{
		for (int i = 1; i <= N; i++) { n *= i; }
	}

	cout << n;
}

이렇게 풀었었는데

가만히 생각해보니 이 문제는 재귀함수 카테고리에 들어 있어서 이렇게 풀면 안 될 것 같았다

#include <iostream>
using namespace std;

int fac(int n)
{
	if (n == 0) { return 1; }
	return n * fac(n - 1);
}

int main()
{
	int N;
	cin >> N;
	cout << fac(N);
}

재귀함수 사용해서 다시 클리어

 

+ Recent posts