Java rekursive Methode mit Brüchen?

Mungukun  19.12.2022, 09:25

Wie weit kommst du denn selbst? Präsentiere uns deinen Lösungsweg! Dann können wir ergänzen.

verreisterNutzer 
Beitragsersteller
 19.12.2022, 09:35
public class Programm {
    public static Fraction apply( Fraction[] arr, Fraction f, int i )
    {if(i<=0||i>arr.length)
    { return new Fraction(-2,1);
    }
    else
    

2 Antworten

Teile es in mehrere Teilschritte auf.

Erstelle zunächst eine rekursive Funktion die einfach in jeder Runde einen Wert aus dem Array ausgibt bis du alle Werte hattest.

Dann guck dir mal an das du eine Zahl als Rückgabewert bekommst. In dem Fall das du beim letzten Element in deinem Array bist geben 1 zurück, ansonsten immer das Ergebnis des letzten Rekursionsaufrufes + 1.

Klappt das hast du eigentlich alle Funktionalitäten um es mit der Logik aus der Aufgabe auszutauschen. Dabei musst du an der Rekursion an sich nichts mehr wirklich ändern.


verreisterNutzer  19.12.2022, 09:38

Danke nochmals für die Aufmerksamkeit.

die unteren 3 werte habe ich, jedoch weiß ich nicht wie ich die else Anweisung schreiben soll, um die Brüche zu summieren.

LisamagPferde04  19.12.2022, 09:42
@verreisterNutzer

Wenn der aktuelle Wert größer als f ist gebe den aktuellen Wert + das von der nächsten Runde zurück.

Ansonsten nur das von der nächsten Runde.

Wie du deine Brüche an sich addierst kommt es drauf an wie das Objekt gestaltet wurde. Eventuell hat das dafür ja schon fertige Funktionen.

Dein Ansatz ist schon mal gut. Nur beachte, dass i==0 kein Fehler ist, wenn das Array nicht leer ist.

Im else-Teil musst Du rekursiv eine Summe von 0 bis i berechnen. Dazu würde ich die Position i betrachten und ggf. apply(arr, f i-1) addieren. In Pseudocode:

a_i = arr[i]>f ? arr[i] : 0;
if (i>0)
    return a_i + apply(arr, f, i-1);
else
    return a_i;

Jetzt kommt es nur darauf an, was die Klasse Fraction alles kann (das ist keine Standardklasse, sondern vermutlich etwas aus einer vorigen Aufgabe). Bei einer anständigen Implementierung vergleichst Du zwei Fractions mit

f1.compareTo(f2)>0 // entspricht f1>f2

Für die Addition f1+f2 bietet Java nicht mal den Hauch eines Konzepts. Da musst Du eben die Dokumentation von Fraction studieren.