[QUOTE=Sen-Mithrarin]Sorry Buddy, wer auch immer du bist, aber deiner Antwort entnehme ich das du ungefähr über den selben Kenntnisstand wie TO verfügst, denn : STATIC is EVIL !
Es gab schon sehr viele Diskusionen darüber wann static Sinn macht und wann nicht, und bei einer einfach Übungsaufgabe wird es wohl schon sicher ausreichen einfach mal static zu nutzen um dierekt von main() aus drauf zuzugreifen, aber Java ist eine objekt-orientierte Sprache. Es sollte also immer mit Objekten gearbeitet werden, egal wie einfach die Aufgabe auch ist. Und objekt-orientiertes Programmieren und das Keyword static passen irgendwie nicht zusammen.
Von daher also : “könnte so aussehen” > ok, sollte sie aber nicht.[/QUOTE]
Sorry Buddy, aber das was du da von dir gibst ist - zumindestens in der Kombination mit der intelligenten Begründung - größter Müll und zeigt das du auch nur die Theorie aus den ersten 2 1/2 Java Tutorials wiedergibst. Warum genau sollte die fakultaet() Funktion an ein Objekt gebunden sein? Macht absolut keinen Sinn.
Ich sehe da einfach nur das “Objektorientierung um jeden Preis”-Prinzip und das ist einfach der dümmste Ansatz den es gibt. Genauso unnötig wie den Jackson Object Mapper für ein (sich nicht erweiterndes) 20 Zeilen JSON zu verwenden. Für lernzwecke vollkommen (!) in Ordnung, aber in der Praxis würde man da wohl eher auf was smartes setzen, es sei denn man hat Jackson schon im Classpath.
@TO:
Ich denke mal Unregistered hat die Frage schon zur Genüge beantwortet, auch wenn ich meine, dass Rekursion nicht unbedingt als Werkzeug bezeichnet werden kann, sondern eher als Designpattern oder Programmiertechnik. Das Ganze lässt sich natürlich auch per Schleife lösen und dann kann man mMn auch von einem “Werkzeug” sprechen. Ich hoffe, es stört nicht, wenn ich das Thema als gelöst markiere.
@CyborgBeta :
Wie du siehst provozieren deine Äusserungen des öfteren unnötige Offtopic-Diskussionen. Ich selbst werde mich zum Inhalt deiner Posts nicht äussern, muss dich aber bitten, dich ein wenig zurück zu halten, insbesondere dann, wenn ein Thema schon als gelöst markiert war.
@Sen-Mithrarin :
Static ist weis Gott nicht immer Evil. Ich z.B. vermisse schon länger eine faculty()- oder gamma()-Methode in java.lang.Math. In dieser Klasse wäre es z.B. unsinnig, eine solche Methode zur Abwechslung mal nicht static zu deklarieren.
[QUOTE=Spacerat]Nice Video, but theres nothing about “static” at all in it.
:o Ich schalte mal besser wieder auf deutsch um.[/QUOTE]
Es geht mehr so um Konstruktors, Konstruktor-Test, dass man alle benötigten Parameter übergibt und dass die eigtl. Logik nicht im Konstruktor stehen sollte, damit getestet werden kann. Weiter hab ich nicht gehört.
Bei Fakultäten machen die Datentypen/Klassen: (int,) long, double und BigInt(eger) sinn. Oder eine mathematische Funktion, die man auf die einzelnen Faktoren oder Multiplikanden anwendet und welche dann quasi ausgeklammert werden kann und wobeiUmkehrfunktion verwendet werden kann.
Weil es dabei um riesige Zahlen für kleine n oder i geht, beißt/beißen sich die rekursive (smarter/eleganter) und iterative Definition nicht.
Ich habe das Video gesehen, bis auf die Fragen am Schluss.
BigInteger/BigDecimal machen auch bei anderen mathematischen Funktionen Sinn, z.B. Winkelfunktionen. Winkelfunktionen sind bereits in java.lang.Math vorhanden, faculty und/oder gamma jedoch nicht. Wenn man diese dort einfügen würde, würde es keinen Sinn machen, diese als non static zu deklarieren.
BTW.:
In TTs Video geht es um Dependency Injection und Test Driven Development. Kein Wort über static und noch weniger Worte über Fakultät. Das Video bietet also nicht nur keinerlei Anhaltspunkt, warum static evil sein soll (DI und TDD sind nur in diesen Gefilden Gründe!), es trägt auch sonst nichts zum Thema Fakultät bei.
In diesem Thema geht es nur um die Implementation einer möglicherweise recht simplen Fakultäts-Funktionen mit ganzen Zahlen und evtl. noch um eine rekursive oder um eine iterative Implementation und nicht darum, ob und warum static vermieden werden sollte. Für eine Grundsatzdiskussion über static bitte ich Interessenten, ein neues Thema zu eröffnen oder nach einem bereits vorhandenem zu suchen.