렝무식
[백준 10872번] 팩토리얼 (JAVA) 본문
BOJ - [10872] 팩토리얼
🖍 주어진 정수의 팩토리얼을 구하는 문제
(link) 10872 팩토리얼
[풀이 과정]
팩토리얼이라는 개념은 배운지 엄청 오래된 것같다. 중학교인지 고등학교인지 .. 아무튼 내가 CS공부한지 얼마 안됐을 때 솔직히 뭔지 기억안나서 찾아봤다.
팩토리얼도 재귀를 통해 구할 수 있다.
물론 재귀로 구할 수 있으면 반복문으로도 구할 수 있다. 그런데도 굳이나 어려운 재귀를 사용하는 이유는 직관적이고 구현이 간단하기 때문
n! = 1 * 2 * 3 * ... * n
n을 1씩 더해주면서 곱하게하면 되겠다.. 싶겠지만 재귀를 사용할 것이기 때문에 거꾸로 n에서 1씩 뺀 값을 곱해줄 것이다.
종료 조건은 n이 1이 되었을 때이다. n이 1이 되면 1을 반환한다.
else문에서는 별다른 동작 없이 바로 반환값을 작성한다. 반환값으로 재귀 함수를 호출하는데, 이전에 말했다시피 인자로는 n-1을 넣어준다. 그런데 이번엔 반환으로 재귀 함수만 넣어주면 안된다. 팩토리얼이란 그 값들을 계속 곱해나가야 하므로 반환값에 n을 함께 곱해줘야 한다.
이전 포스팅 중에 gif 속도가 너무 빠르다는 말을 한 것 같은데 또 빠르게 만들었다..
[Pseudocode]
int factorial(int n)
1. if(n==1)
2. return 1
2. else
3. return n * factorial(n-1)
[Code]
import java.util.*;
/**
* 백준 10872번
* 팩토리얼
* 분류 : 수학, 구현
*/
public class Problem10 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int N = input.nextInt(); // 테스트 케이스 입력
System.out.println(factorial(N));
input.close();
}
/**
* 재귀를 통해 주어진 정수 n의 팩토리얼 n!을 구한다
* @param n
*/
public static int factorial(int n) {
if(n <= 1)
return 1;
else
return n * factorial(n-1);
}
}
[Result]
(2021.07.21 풀이분)
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 2581번] 소수 (JAVA) (1) | 2023.01.13 |
---|---|
[백준 17478번] 재귀함수가 뭔가요? (JAVA) (0) | 2023.01.13 |
[백준 10829번] 이진수 변환 (JAVA) (0) | 2023.01.13 |
[백준 4153번] 직각삼각형 (JAVA) (0) | 2023.01.12 |
[백준 3009번] 네 번째 점 (JAVA) (0) | 2023.01.12 |