Aufgabe 4.2.


sollte jemand mit doubles rumwurschteln auf reinen Integerfunktionen wie die Catalan-Zahlen, bekommt derjenige ein saftiges Minus.


Warum darf ich nicht mit double rumwurschteln, wenn hinterher doch brav wieder ein long rauskommt und die Aufgabe bzgl Datentyp sich nicht auslässt? Steht doch wohl nicht drin, dass der Datentyp nicht verändert werden darf…


Es geht ja darum, den Algorithmus zu bearbeiten, nicht die Ergebnisse, die er liefert. Ausserdem sollen wir ja erklaeren, wie und warum sich die Definitionsmenge der Funktion aendert und das ist irgendwie witzlos, wenn man andere Datentypen nimmt.


Ein sehr wichtiger Grund: Fließkommaarithmetik ist im Vergleich zur Ganzzahlarithmetik brutal langsam. Warum das so ist, wird im zweiten Semester in Grundlagen der Rechnerarchitektur erzählt.


Der andere wichtige Grund: Fliesskommazahlen haben Rundungsfehler, und je nachdem wie man sie behandelt koennen sich diese Fehler so weit aufschaukeln, dass am Schluss nur Mist rauskommt, zB wenn man aus dem Ergebnis dann Ganzzahlen macht. Und bei sehr grossen Zahlen kann ein Rundungsfehler bei Fliesskommazahlen eh sofort groesser als 1 werden und somit das in Ganzzahlergebnis das man rausbekommen will gleich unbrauchbar machen.

Anders ausgedrueckt: Ein Lehrling der die Schraube mit dem Hammer einschlaegt faellt auch durch, obwohl das nicht explizit verboten ist…


Aber als Lehrling bekommt man auch gesagt, dass man nen Hammer und ne Schraube in der Hand hat und bekommt beim ersten Mal auch gesagt, was man mit nem Hammer zu tun hat und was nicht, und wie man mit ner Schraube umgeht…man muss es nicht von allein schon vorher wissen: dafür ist man LEHRLING und hat einen LEHRMEISTER. (Ich weiß, wovon ich sprech: sag bloß, 2 Ausbildungen…und du?)


Studium. Erwachsen. Selbstaendig. Denken.

Ums nochmal klarzustellen:
Hat dir dein Lehrmeister auch jedes mal erzaehlt, dass man mit dem Hammer nicht auf Leute wirft und dass man besser die Schraube und nicht die Hand mit dem Hammer bearbeitet? Und dass man nicht jedes bloede Beispiel exakt woertlich nehmen sollte?


Wer hat denn mit dem schlauen Bild begonnen…
Und ja, einem Lehrling wird so ziemlich alles erklärt…


k.A…, ich kenns nur aus diversen Ferienjobs. Da laeufts eher ala “weisst du wie $zeug geht?”. Dann kriegt mans erklaert oder die lassen einen mal machen und erklaerens einem bei Bedarf. Bei den Lehrlingen die da rumliefen wars nicht anders. Einzige Ausnahme waren natuerlich gefaehrlichere Sachen als ein Hammer…


außerdem will ich den Lehrmeister sehen der nem Lehrling sagt er soll ne SCHRAUBE mit nem Hammer in die Wand hauen…

dafür gibts nägel :smiley: und keine schrauben!


lehre ist aber nicht gleich Studium…


sets mode +hatsnichverstanden [kaut]

nicht ganz so off topic:
Ausserdem hat ers ja jetzt von (weit hergeholt) Mitlehrelingen gesagt bekommen. Wenn er jetzt trotzdem die Schraube reinhämmert und dafür vom Meister zamgeschissen wird is das auch zum teil seine Schuld.


Nun trotz der Gefahr, wieder so nette Antworten zu erhalten (na wie blöd biste eigentlich, dass du sowas fragst!!! finde nämlich generell manche Antworten etwas unter der Gürtellinie…nicht jeder hat halt als Muttersprache Java, C oder Haskell gelernt…):
was ist denn dann genau mit Wertebereichsänderung gemeint? Bei Wertebereich denk ich an die Werte, die als Ergebnis einer Funktion rauskommen können (also ganz mathematisch). Da sollte unsere Endrekursion wohl aber doch die gleichen Werte rauskriegen wie die lineare (sonst stimmt sie ja wohl nicht). Was ist nun also der Wertebereich?


Der Wertebereich ist der Bereich in dem die Funktion korrekte Antworten liefert


hm, bei mir laufen alle 3 Versionen von 0 bis 24 ohne Fehler…weiter müsste ich erst noch die Werte zum Vergleichen haben, auf der verlinkten Seite sind die Catalanzahlen nämlich leider nur bis 24 aufgelistet…


Aber die vorgegebene Funktion geht bis 33…
Und man kann weiter auch noch per Hand ausrechnen (das ist ja das schoene an der rekursiven Definition).


Meine 3 Methoden machen aber alle trotzdem bis 33 das gleiche und richtige…


Versuch es mal ohne [m]double[/m] oder [m]Double[/m] oder [m]BigInteger[/m] oder native calls oder … wenn es dann noch immer klappt, prima!


KEINE doubles oder sonst was, nur long und int
native calls…was isn das?


Und es ist trotzdem end- bzw. entrekursiviert…?
(Ich liebe Kalauer und Zungenbrecher für fränkische Mitbürger :-p )
Dann prima!