-
JUNGOL 실력키우기 1309 : 팩토리얼보관함 2018. 11. 15. 13:28
1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말하며 n!로 나타낸다.
0! = 1
1! = 1
2! = 2
n! = n * (n-1)!
:
와 같이 정의된다.예로 4! = 4×3×2×1 = 24 이다.
n! 이 주어졌을 때 결과를 출력하는 프로그램을 작성하라.
* 결과가 int범위를 넘는 경우
VC/VC++는 변수 선언 __int64 입력/출력 서식문자 %I64d
GCC/G++는 변수 선언 long long 입력/출력 서식문자 %lld
를 사용한다.4
4! = 4 * 3! 3! = 3 * 2! 2! = 2 * 1! 1! = 1 24
드디어 재귀함수가 등장했네요. 일단 구현은 간단합니다.
그런데 입력 범위가 15까지이므로 int 형태로 표현이 불가능하니 위에서 나온 것 처럼 더 범위를 표현할 수 있는 자료구조를 사용해야 합니다.
실제 Visual Studio에서 돌아가는 것을 확인하고 홈페이지에 검사를 하니 컴파일 에러가 발생합니다. 에러 내용은 다음과 같습니다.
말하자면 코드에서 사용한 __int64가 존재하지 않는다 라는 것 같은데요. 아마 컴파일러가 VC의 컴파일러와 다른 것 같으니 타입을 long long으로 바꿔 시도해 보겠습니다.
네, 통과 됐네요. 결과적으로 문제에 적혀있던 __int64를 쓰라는 문구에 낚인게 됐군요.