10872번: 팩토리얼
0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.
www.acmicpc.net
오늘은 팩토리얼에 대한 문제를 풀어보았다. 팩토리얼을 이해하기 위하여 재귀함수 그림을 가져왔다.
factorial 함수의 return n * factorial(n - 1) 부분에서 자기 자신을 호출하고 있는 것을 볼 수 있다.
을 구하기 위하여 factorial(4) 를 호출하게 되면 4 * factorial(3) 을 반환하기 때문에 다시 factorial(3) 이 호출된다.
숫자를 입력받기 위해 Scanner 함수와 재귀함수를 이용하였다.
0! = 1로 표현할 수 있고 a가 1또는 0이 될 때는 return 1을 해주고, 그 외에는 a * factorial(a-1)을 해줘 재귀를 구성한다.
ex) 5를 입력하게 되면
5* factorial(5) {
4*factorial(3) {
3*factorial(2) {
2*factorial(1) {
return 1;
}
retrun 2 * 1;
}
return 3 * 2 * 1;
.
.
.
.
return 5 * 4 * 3 * 2 * 1;
이런 식으로 표현하게 된다.
'Coding Test > 백준' 카테고리의 다른 글
[백준] 1008번: A / B (0) | 2023.01.16 |
---|---|
[백준] 18108번: 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.12.20 |
[백준] 1000번 : A+B 1001번 : A - B (0) | 2022.08.25 |
[백준] 10172번 : 개 (0) | 2022.08.01 |