Cześć to mój pierwszy post, proszę o wyrozumiałość :)
Mam problem z przekształceniem rekurencyjnej kombinacji w iterację:
Wejście:
- arr - tablica elemntów, len - ilość kombinacji, startPosition - początek nastepnej iteracji, result - wynik rekurencji
static void combinations2(String[] arr, int len, int startPosition, String[] result) {
if (len == 0) {
for (String n : result) {
System.out.print(n + " \n");
}
return;
}
for (int i = startPosition; i <= arr.length - len; i++) {
result[result.length - len] = arr[i];
combinations2(arr, len - 1, i + 1, result);
}
ile++;
}
Próbuje tą rekurencję zamienić na model iteracyjny z odkładaniem zmiennych na stosie, lecz nie wiem co zrobić z instrukcją return; . Czy podejście jest poprawne?
static void combinations2(String[] arr, int len, int startPosition, String[] result) {
Stack<Integer> start = new Stack<>();
Stack<Integer> length = new Stack<>();
start.push(startPosition);
length.push(len);
while (len > 0) {
startPosition = start.pop();
len = length.pop();
if (len == 0) {
for (String n : result) {
System.out.print(n + " \n");
}
//return;
}
for (int i = startPosition; i <= arr.length - len; i++) {
result[result.length - len] = arr[i];
//combinations2(arr, len - 1, i + 1, result);
start.push(i + 1);
length.push(len - 1);
break;
}
ile++;
}
}
Dzięki za każdą pomoc.