Hallo, ich habe heute mittag schon einen Beitrag zu diesem Thema erstellt, jedoch wurde es leider nicht beantwortet. Es ging darum:
Ich habe ein Array mit integer Werten. Bei jedem Durchlauf müssen die benachbarten Elemente aufsummiert werden. Ich möchte den Vorgang solange wiederholen, bis nur noch ein Element übrig ist. Ich möchte dabei keine Schleifen verwenden. Ich habe in meinem Code das Problem, das ich irgendwie die Abbruchbedingung (denke ich mal) nicht hinbekomme. Es tut im wesentlichen das was es tun sollte, jedoch hört es nicht auf und ich möchte auch am Ende ein Ergebnis da stehen haben d.h das letzte Element soll nach jedem Durchlauf entfernt werden. Hier ist ein Beispiel wie der Output aussehen soll, folgend füge ich meine selbst geschriebenen Code hinzu. Ich bedanke mich jetzt schon mal Herzlich, wenn mir jemand bei meinem Problem weiter helfen kann.
Beispiel:
Eingabe: [1, 6, 4, 3, 2]
Erster Durchlauf: [1 + 6, 6 + 4, 4 + 3, 3 + 2]
Zweiter Durchlauf: [7 + 10, 10 + 7, 7 + 5]
... wiederholen, bis nur noch ein Element übrig bleibt.
Beispielhafte Ausgabe für das Array [7, 10, 7, 5]:
63
34 29
17 17 12
7 10 7 5
Ich habe ein Array mit integer Werten. Bei jedem Durchlauf müssen die benachbarten Elemente aufsummiert werden. Ich möchte den Vorgang solange wiederholen, bis nur noch ein Element übrig ist. Ich möchte dabei keine Schleifen verwenden. Ich habe in meinem Code das Problem, das ich irgendwie die Abbruchbedingung (denke ich mal) nicht hinbekomme. Es tut im wesentlichen das was es tun sollte, jedoch hört es nicht auf und ich möchte auch am Ende ein Ergebnis da stehen haben d.h das letzte Element soll nach jedem Durchlauf entfernt werden. Hier ist ein Beispiel wie der Output aussehen soll, folgend füge ich meine selbst geschriebenen Code hinzu. Ich bedanke mich jetzt schon mal Herzlich, wenn mir jemand bei meinem Problem weiter helfen kann.
Beispiel:
Eingabe: [1, 6, 4, 3, 2]
Erster Durchlauf: [1 + 6, 6 + 4, 4 + 3, 3 + 2]
Zweiter Durchlauf: [7 + 10, 10 + 7, 7 + 5]
... wiederholen, bis nur noch ein Element übrig bleibt.
Beispielhafte Ausgabe für das Array [7, 10, 7, 5]:
63
34 29
17 17 12
7 10 7 5
Java:
public class SumArray {
public static void main(String[] args) {
int[] a = {1, 6, 4, 3, 2};
sum(a, 0, 0, a.length);
}
//next soll immer der Nachbar von vorne sein mit dem es addiert wird
public static void sum(int[] a, int vorne, int next, int n) {
if (vorne < next || n == 1) {
return;
} else {
int j = up(a, vorne);
sum(a, vorne + 1, vorne, n - 1);
sum(a, 0, vorne, a.length);
}
}
public static int up(int[] a, int vorne) {
int i = vorne;
int j = vorne + 1;
a[i] = a[i] + a[j];
return i;
}
}