Aufgabe 4.2.


Ich bin froh, dass meine nur bis 14 geht :slight_smile: Das liefert die Antwort auf den Wertebreich


Is end- und entrekursiv…
HILFE, das macht mir Angst…bin doch blutiger Anfänger…


dann ist es sicher falsch: „entrekursiv“ gibt es nicht :-p


@Maylis: Ich hab so das Gefühl, dass wir den gleichen Code haben xD
Bei mir ist auch alles identisch mit cn(long n) und ich verwende ebenfalls nur long-Datentypen. Das Ding ist endrekursiv (wenn ich das Thema richtig verstanden habe) und auch sonst passt alles. Am besten einfach abwarten…


PlagiatOverflowException in EST.java:4 :cry:


Meine Methoden sind auch endrekursiv bzw. entrekursiviert (:p) und liefernexakt die selben Ergebnisse wie cn(long n) zurück (auch, wenn sie overflows bei n >33 produzieren). Dass das der Fall ist, habe ich in meiner Lösung jetzt eben entsprechend begründet.

Was das auftreten des Overflows angeht: Probiert mal aus, ab wann sich der Rückgabewert der gegebenen Funktion ins negative begibt, wenn ihr die Division am Schluss entfernt :wink: . Warum man jetzt aber davon ausgeht, dass der Großteil der Studenten eine Lösung abgibt, bei der offensichtlich auf Grund der Abarbeitungsreihenfolge ein ähnlicher Overflow auftritt, und dann die Begründung der Wertebereichänderung in die Aufgabe mit aufnimmt, erschließt sich mir nicht.


Nachdem man auch in einer endrekursiven, bzw. entsprechend entrekursivierten Variante die Berechnungsreihenfolge identisch mit der gegebenen Funktion halten kann ist mir auch rätselhaft wieso sich der Wertebereich dann ändern sollte → tut er bei mir nicht.
Der Wertebereich verkleinert sich auf 0-14 wenn man zuerst den Nenner und dann den Zähler des Gesamtbruchs ausrechnet, aber wieso sollte man das tun?? Hm, ich würde sage wenn sich der Wertebereich nicht ändert ist die Begründung einfacher :stuck_out_tongue:

Edit:Mist, iridium war schneller…


was läuft da schief?
an der allen anderen stellen gehts genauso:

Catalan.java:14: cataHelper(long,long) in Catalan cannot be applied to (long)
return cataHelper(n);


Eine Methode, die zwei Argumente erwartet, mit nur einem Argument aufrufen zu wollen, funktioniert nicht.


Danke,
mein Problem ist, dass ich in meine Methode cataHelper die Eingabe n übergebe aber in meiner Methode mein Endergebnis in m speichern will. Um sie dann als Ergebnis dann wieder zruück zu returnen. Wenn ich aber m in cn(long n) initalisiere, dann kommt der gerade gepostete Fehler


Immerhin schön zu lesen, dass ich nicht der einzige ohne Wertebereichänderung bin. Nur frag ich mich halt jetzt was ich da antworten soll…

Ich glaube dein Problem ist der Wertebereich. Wenn du in einer for Schleife eine Variable i deklarierst, dann kannst du nur innerhalb der Schleife darauf zugreifen. Genauso kannst du aus einer Funktion nicht auf Variablen zugreifen, die in einer anderen Funktion angelegt wurden.


ist denn nicht eigentlich schon die Aufgabenstellung falsch?
denn Cn =(2n)!/((n + 1)! · n!) is doch gar nicht für n>=0 definiert, wenn man 0 einsetzt…


1 / (1 * 1) = 1

Sehe da jetzt nicht das Problem?


XD ja fail 0!=1… my fault…


Hallo…

mal ne ganz dämliche Frage, aber mir ist nicht so wirklich klar, was wir bei 4.2 a) übrhaupt tun sollen.

Sollen wir die .java datei von der Website runterladen und dort drin die Funktion in eine endrekursive Funktion umwandeln oder wie?

und mit cn(long n) ist dann quasi die Methode in der Catalan.java datei gemeint und diese sollen wir ändern und dann erläutern wieso die Werte nicht immer korrekt sind?


ja


okay, danke!


darf ich in dem endrekursiven Programm eine while Schleife haben?


nein?!


doch!
Was ist denn daran verboten:^^

int i = 0;
int sum = 0;
while(i<5) {
  sum+=i*2+1;
  i++;
}