Combination 조합 | 재귀함수

호떡·2022년 9월 19일
0

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);		
	}
}

combination(idx+1, sidx)

해당 idx번쨰 재료를 안뽑은 상태. 즉,

| (비어있는 상태) | (비어있는 상태) |
| 상추 | (비어있는 상태) |
| 상추 | 패티 |
| 상추 | (비어있는 상태) |   👉 이 상태로 돌아갔다가
| 상추 | 치즈 |                 👉 다음 idx인 '치즈' 선택

0개의 댓글