W koszu znajduje się nieograniczona liczba kulek koloru Niebieskiego, Czerwonego i Zielonego. Wyciągasz pojedynczo n kulek. Jakie są wszystkie możliwe kombinacje kolorów? Czyli:
dla n =1, istnieją trzy kombinacje {N, C, Z}.
dla n =2, istnieje 9 kombinacji {NN, NZ, NC, ZZ, ZC, ZN, CC, CZ, CN}
dla n =3 istnieje 27 ....
Kolejność elementów zbioru jest bez znaczenia.
Napisałem rekurencyjny algorytm, który drukuje wszystkie kombinacje. Mam problem z przedstawieniem go w formie iteracyjnej. Proszę o wskazówki jak mógłbym się za to zabrać.
private static void permRec(StringBuilder sb, int numberOfBalls) {
String[] rgb = {"R", "G", "B"};
for (int i = 0; i < 3; i++) {
if (numberOfBalls > 1) {
sb.append(rgb[i]);
permRec(sb, numberOfBalls - 1);
sb.deleteCharAt(sb.length() - 1);
} else {
sb.append(rgb[i]);
System.out.println(sb);
sb.deleteCharAt(sb.length() - 1);
}
}
}