import java.util.Arrays;
public class Combination_재귀 {
static String[] 토핑 = {"상추", "패티", "치즈", "토마토"};
static int N = 4; // 서로 다른 4개 중에
static int R = 2; // R개 뽑을 거야
static String[] sel = new String[R]; // 뽑아서 임시로 저장해둘 배열
public static void main(String[] args) {
combination(0, 0);
}
//idx : 토핑에서 해당 위치의 재료
//sidx : 뽑은 재료의 위치
static void combination(int idx, int sidx) {
if(sidx == R) {
System.out.println(Arrays.toString(sel));
return;
} else if (idx == N) return;
//재귀 부분
sel[sidx] = 토핑[idx]; // 일단 넣고
combination(idx+1, sidx+1);
combination(idx+1, sidx);
}
}
해당 idx번쨰 재료를 안뽑은 상태. 즉,
| (비어있는 상태) | (비어있는 상태) |
| 상추 | (비어있는 상태) |
| 상추 | 패티 |
| 상추 | (비어있는 상태) | 👉 이 상태로 돌아갔다가
| 상추 | 치즈 | 👉 다음 idx인 '치즈' 선택