Summe Array rekursiv

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Summe Array rekursiv

    Hallo zusammen,

    ich bin was Java angeht ziemlicher Anfänger, trotzdem möchte ich es unbedingt lernen und übe fleißig...nun stehe ich vor folgenden Problem: Ich möchte die Summe eines Array primitiv rekursiv berechnen (die iterative Lösung ist kein Problem :-)) Wir haben das heute im Unterricht gemacht, nur ging das ein wenig schnell...
    Hier der Code:

    Quellcode

    1. public static int arraySummme(int[] a, int i) {
    2. if (i == a.length - 1) {
    3. return a[i];
    4. else
    5. int result = a[i] + arraySummme(a, i + 1);
    6. return result;
    7. }
    8. }
    Alles anzeigen



    Ich weiß was Rekursion an sich macht und wie ein rekursiver Aufruf aufgebaut ist aber in diesem Bsp ist mir unklar, warum i= a.length-1 sein soll und der rekursive Aufruf an sich!

    Für Tipps jeglicher Art bin ich sehr dankbar!!!


    Vielen Dank und viele Grüße,

    Michael
  • Hi,

    1.) Bitte benutz die Codetags ^^ Siehst du "unten" wenn du einen Beitrag erstellst.

    Zu deinem Problem:
    Da steht i == a.length -1. Das ist keine Zuweisung sondern eine Überprüfung. Irgendwann musst du ja aufhören dich rekursiv wieder aufzurufen. Das ist genau dann wenn du alle Elemente des Arrays abgehandelt hast.
    Warum das a.length -1 ist ergibt sich aus der Array Logik ;) Wenn noch unklar les dich nochmal in Arrays ein.

    Der rekursive Aufruf an sich muss doch sein damit es überhaupt ne rekursion ist oO

    Du schaust erst ob die schon am Ende bist.
    Wenn nicht Erweiterst du dein result um das aktuelle Element aus a + dem rekursiven Aufruf. Dort kommt natürlich wieder was raus.

    Hm hoffe das hilft etwas. Ist gar nich so leicht zu erklären X( Das Verständnis für rekursion kommt auf einem guten Gemisch aus Theorie und einigen Übungen! :)
    Also bleib dran ;)
  • Hallo,

    vielen Dank für deine Antwort!!

    wenn das jetzt stimmt, was ich hier schreibe, dann habe ich es glaube ich verstanden:

    a.lenght-1 gibt das letzte Element im Array an (ich war wegen der -1 verwirrt aber die Positionen fangen ja bei 0 an) und wenn wir da sind, ist Schluss mit dem Aufrufen, weil ja alle Elemente durchgenommen wurden.
    Wenn man noch nicht am Ende ist ergibt sich das Ergebnis aus der i-ten Position+ der i+1-ten Position bis man dann endlich am Ende ist.

    Ich hoffe das war richtig so???

    Vielen Dank und Grüße,
    Michael