반응형
다음 문제를 통해 재귀 함수와 이항계수를 활용해 보자.
문제 핵심
- N : 자연수
- K : 정수
풀이 과정
이항 계수는 다음과 같은 공식에 따라 이루어 진다. 이걸 코드로 구현해 보자.
재귀 방식
재귀를 통해 factorial를 해결한다.
public static int factorial(int n){
if(n == 1){
return 1;
}
return factorial(n-1) * n;
}
반복문 방식
반복문을 통해 factorial를 해결한다.
public static int factorial(int n){
int result = 1;
for (int i = n; i > 1; i--){
result *= i;
}
return result;
}
int result = factorial(N) / (factorial(K) * factorial(N - K));
재귀 방식은 위와 같이 StackOverflow현상이 일어났다.
자바의 JVM의 기준 스택 크기의 한계 때문에 재귀 함수 호출 과정에서
StackOverflow현상이 일어난 것으로 보인다.
때문에 반복문을 통해 이를 해결하였다.
반응형
'백준 단계별 풀이' 카테고리의 다른 글
[ 백준 25192번 문제 ] 인사성 밝은 곰곰이 - JAVA (2) | 2025.03.09 |
---|---|
[ 백준 1010번 문제 ] 다리 놓기 - JAVA (2) | 2025.03.08 |
[ 백준 24511번 문제 ] queuestack - JAVA (1) | 2025.03.03 |
[ 백준 2346번 문제 ] 풍선 터뜨리기 - JAVA (2) | 2025.03.02 |
[ 백준 28279번 문제 ] 덱 2 - JAVA (1) | 2025.03.01 |