
class Solution {
public int solution(int balls, int share) {
return combination(balls, share);
}
public static int combination(int balls, int share){
if(balls == share || share == 0)
return 1;
return combination((balls - 1), (share - 1)) + combination(balls - 1, share);
}
}
본 문제는 재귀 함수를 이용하여 문제를 해결해야 하는 문제였는데 생각보다 많이 까다로워서 구글링을 통해 로직을 참고하였다.

해당 식을 활용하여 재귀 함수를 통해 구현 하였다.
예를들어, 문제처럼 3개의 구슬(1, 2, 3) 중 2개를 뽑는다고 가정하면
3C2 = 2C2 + 2C1 이다.
1, 2, 3 중 1을 뽑지 않는 경우 2, 3을 모두 뽑아야 하므로 => 2C2
1, 2, 3 중 1을 뽑은 경우 2, 3 중 1개를 뽑아야 하므로 => 2C1
이렇게 수식을 이해하고나서 재귀함수를 구현 해보았다.
공의 개수와 뽑을 개수가 같거나 0개를 고르는 경우는 경우의 수가 1이므로 1을 반환하고 그 외에는 위의 식을 이용해 경우의 수를 반환하도록 한다.