Hilfestellung bei Rekursion

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

  • Hilfestellung bei Rekursion

    Hi Leute,

    In einem Array sind Messwerte als positive Integerwerte gespeichert. Der erste negative wert im Array signalisiert das Ende der Messreihe. Alle übrigen Arrayelemente sind irrelevant.
    Ich möchte jetzt die Summe der Werte in einer rekursiven Methode ermitteln.
    Wie kann ich am Besten anfangen?
  • Ja, aber wie läuft es mit dem Array ab? Die rekursive Methode summiert doch alle nicht-negativen Werte, die sich im Array befinden auf.

    Das Integer-Array erstelle ich dann in der main Methode, muss sie aber doch erst mal mit Werten implizit füllen, oder aber Random() für das generieren von Zufallszahlen hernehmen, oder?

    Dann einfach ne statische rekursive Methode, der ich ein Integer-Wert als Parameter übergebe wie

    Quellcode

    1. public static int sumMessValues(int num)


    und dann so:

    Quellcode

    1. int summe = 0;
    2. if(num < 0)
    3. return summe + sumMessValues(num + num)
    4. return .....


    Ich weiß so stimmt das ned, aber das ist momentan mein kleiner Einfall dazu. Oder muss ich das Integer-Array in der rekursiven Methode deklarieren?
    Vielen Dank
  • Das Array kannst natürlich mit der Random() Methode füllen, jedoch erstellt diese nur
    Zufallszahlen von 0 bis 1 und von daher keine negativen Zahlen. Du könnst aber zusätzlich noch eine Random()
    Methode nutzen, mit der du dann entscheidest ob die erste Random() eine negative oder eine positive Zahl
    erstellst. Das bleib dir überlassen.

    Nun zu deiner sumMessValue() Methode.
    Du brauchst, falls du die Methode und das Array in getrennten Klassen hast aufjedenfall Parameter.
    Das wäre zum einen das Array an sich, den Index den du in deinem Beispiel unten denk ich mal als num
    verwendest und die Summe.

    Ich weis jetzt nicht genau ob du die Deklaration int summe = 0; in der Methode sumMessValue() stehen hast,
    falls dem aber so ist wäre das falsch, da er bei jedem Methodenaufruf die Summe zurücksetzt und du schlussendlich
    nur den letzten Wert in deinem Array als Summe hättest.

    Mein Lösungsvorschlag:
    Leg dir zwei Klassen an. Die eine generiert Zufallszahlen
    Die andere Klasse enthält dann dein Array, die rekursive Methode, eine Variable Summe und eine Variable Index.
    Lass dir dein Array mit den generierten Zufallszahlen füllen.

    Die rekursive Methode traversiert dann mit Hilfe der Index Variablen durch dein Array

    Quellcode

    1. class Messwerte
    2. {
    3. public setArray()
    4. public getSum()
    5. private Array
    6. private Index
    7. private Sum
    8. public void sumMessValue()
    9. {
    10. if Array[Index] >= 0
    11. Summe += Array[Index];
    12. Index++;
    13. sumMessValue();
    14. }
    15. }
    Alles anzeigen

    Das soll jetzt nur einer grober Ansatz sein, der weder vollständig ist noch richtig funktioniert, aber dir
    einen Lösungsmöglichkeit bieten soll.
    Es gibt noch andere Möglichkeiten wie man dieses Problemstellung umsetzt. Das wäre der Weg den ich wählen würde.

    gruß
    nobody

    //edit:
    noch zu den Zufallszahlen mit Random(): Der Test wird daruch schwieriger, als wenn du das array mit eigenen werten füllst, da
    du die werte noch ausgeben und addieren musst um zu sehen ob das ergebnis mit dem der methode übereinstimmt.

    Wenn ich heut abend noch Lust und Zeit hab, werde ich das mal coden und bei Bedarf kann ich es dann posten.
    "Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von nobody special ()