Java: Wie kann ich rekursiv die Nachbarn miteinander addieren?
Hallo, kann mir jemand helfen, den Code etwas umzuwandeln?
Ich möchte hier nicht die Zahlen miteinander addieren, wie es in meinem Code passiert, sondern möchte, dass ich die Nachbarn jeweils miteinander addiere, sodass ich am Ende nur noch eine Zahl da stehen habe.
Das ganze soll rekursiv laufen und das Ergebnis dann, so wie es im Stack abgelegt wurde, nach dem FiFo-Prinzip wieder ausgegeben werden.
Wie müsste dann meine Abbruchbedingung aussehen?
Also ich muss im Array nach einem kompletten Durchgang das letzte Element entfernen. Jedoch weiß ich nicht, wie das aussehen soll und wie das Programm dann abbricht, wenn das Array nur noch die Länge 0 hat.
Danke im Voraus.
static int arr[] = { 1, 6, 4, 3, 2 };
// using recursion.
static int findSum(int A[], int N) {
if (N <= 0)
return 0;
return (findSum(A, N - 1) + A[N - 1]);
}
// Driver method
public static void main(String[] args) {
System.out.println(findSum(arr, arr.length));
}
}
1 Antwort
Das geht recht simpel.
static int findSum(int[] A, int N) {
if(N == 0)
return A[N];
else
return A[N] + findSum(A, N - 1);
}
Aufrufen dann aber bitte so:
System.out.println(findSum(arr, arr.length - 1));
So brauchst du nix entfernen, du gehst so einfach jede Zahl einzeln ab und schleifst das Array im Aufruf mit durch.
Erster Durchlauf: [1 + 6, 6 + 4, 4 + 3, 3 + 2]
Zweiter Durchlauf: [7 + 10, 10 + 7, 7 + 5]
(17+17, 17+12) = 34, 29
(34+29) = 63.
So sollt4e es sein, aber ich habe es mittlerweile hinbekommen danke trotzdem :)
Ja aber dann summiere ich einfach linear die zahlen miteinander, das Ergebnis sollte hier mit dem Beispiel nicht 16 sein sondern 63, also ich möchte jeweils ähnlich wie beim Pascalischen Dreieck die Nachbarn summieren