Coding Test/백준

[백준] 10872번: 팩토리얼

준몽쓰 2023. 5. 5. 21:37

10872번: 팩토리얼 (acmicpc.net)

 

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;

 

이런 식으로 표현하게 된다.