Faktoriell aufrufen



  • @ Kuldren:
    Wieso regst du dich so darüber auf, dass dein Programm "kritisiert" wird? Erstens sind die anderen Argumente als das von Bashar (inklusive meinem) nicht als Vorwurf zu interpretieren. Ich habe es übrigens auch nicht ganz ernst gemeint, und Fellhuhn scheinst du auch noch nicht zu kennen. Andernfalls kann ich mir deine Reaktion wirklich nicht erklären...

    Und wenn du unsere Reaktionen sowieso schon vorhergesehen hast, wieso hast du dann überhaupt gepostet?

    Tim schrieb:

    da ein ordentlicher Compiler hier die Rekursion eh eliminieren wird.

    Werden Rekursionen vom Compiler auch optimiert? Es gibt ja einige Fälle, wo eine iterative Lösung gar nicht unbedingt besser und auch nicht einfacher zu realisieren ist.



  • Nexus schrieb:

    Tim schrieb:

    da ein ordentlicher Compiler hier die Rekursion eh eliminieren wird.

    Werden Rekursionen vom Compiler auch optimiert?

    In diesem Fall, bei einem nicht-total-schrottigen Compiler, bestimmt. Stichwort Tail recursion.



  • Nexus schrieb:

    @ Kuldren:
    Wieso regst du dich so darüber auf, dass dein Programm "kritisiert" wird? Erstens sind die anderen Argumente als das von Bashar (inklusive meinem) nicht als Vorwurf zu interpretieren. Ich habe es übrigens auch nicht ganz ernst gemeint, und Fellhuhn scheinst du auch noch nicht zu kennen. Andernfalls kann ich mir deine Reaktion wirklich nicht erklären...
    Fellhuhn kenn ich nicht...und ehrlich gesagt hab ich keinen Bock darauf mir die Foreninternen Witzbolde alle zu merken um dann zwischen ernstgemeinten und pseudowitzigen Kommentaren zu differenzieren. Ich hab lediglich gepostet um ein Beispiel zu bringen.

    Und wenn du unsere Reaktionen sowieso schon vorhergesehen hast, wieso hast du dann überhaupt gepostet?
    Damit der Threadersteller mal ein Beispiel zu Rekursion bekommt



  • /edit bullshit.



  • Tim schrieb:

    In diesem Fall, bei einem nicht-total-schrottigen Compiler, bestimmt. Stichwort Tail recursion.

    Welcher Compiler macht das denn, und wann? Die Scheme-Leute reißen sich ein Bein aus, die genauen Bedingungen zu formulieren, das ist in C++ bestimmt nicht gerade leichter. So ein Feature bringt einem ja nichts, wenn man sich nicht darauf verlassen kann.



  • Kuldren schrieb:

    Mit unsigned int einfach das Vorzeichen zu kicken würde zwar die Funktion zum Teil erfüllen aber dafür sicher einige Fehler zur Folge haben, denn 1. ist die Fakultät für negative Zahlen undefiniert und 2. hat es sicher einen Grund warum negative anstatt positive Argumente übergeben werden - was in den meisten Fällen sicher ein Fehler im Programm ist.

    Und auf solche möglichen Fehler wird der Programmierer genau durch eine Warnung aufmerksam gemacht wenn er einen int an einen unsigned int Parameter übergibt. Wenn die Funktion einen bestimmten Wertebereich hat und es einen Typen mit dem entsprechenden Wertebereich gibt, wieso sollte man dann einen anderen verwenden der dem Wertebereich nicht entspricht?

    Kuldren schrieb:

    Wofür gibts Conditions?

    Kuldren schrieb:

    [...]da braucht es keine Exceptions, Preconditions, [...]

    Hauptsache du bist dir mit dir selbst einig...

    Kuldren schrieb:

    Fellhuhn schrieb:

    Kuldren schrieb:

    Fellhuhn schrieb:

    Kuldren schrieb:

    ...

    ...

    ...

    ...

    ...

    http://www.tty1.net/smart-questions_de.html#keepcool diesen und den folgenden Absatz solltest du dir zu Herzen nehmen 😉



  • Bashar schrieb:

    Welcher Compiler macht das denn, und wann? Die Scheme-Leute reißen sich ein Bein aus, die genauen Bedingungen zu formulieren, das ist in C++ bestimmt nicht gerade leichter. So ein Feature bringt einem ja nichts, wenn man sich nicht darauf verlassen kann.

    Sich über das Vorhandensein oder nichtvorhandensein eines solchen Features den Kopf zu zerbrechen bevor der Profiler einem erklärt, dass die Rekursion tonnenweise Stack vernascht fällt mal wieder unter das Thema Premature Optimization
    Mal davon abgesehen dass weiter oben schon gesagt wurde, dass ab 13! die Kapazität eines int eh überschritten ist - und eine Rekursionstiefe von 13 ist ja nicht wirklich aufregend 😉



  • pumuckl schrieb:

    Und auf solche möglichen Fehler wird der Programmierer genau durch eine Warnung aufmerksam gemacht wenn er einen int an einen unsigned int Parameter übergibt. Wenn die Funktion einen bestimmten Wertebereich hat und es einen Typen mit dem entsprechenden Wertebereich gibt, wieso sollte man dann einen anderen verwenden der dem Wertebereich nicht entspricht?
    Du hast echt nicht verstanden worum es ging...Es ging nicht um die Machbarkeit sondern die Sinnhaftigkeit. Wozu sollte man negative Parameter übergeben wenn man ohenhin weiß dass diese für die Fakultät undefiniert sind?
    Hauptsache du bist dir mit dir selbst einig...
    Auch das hast du nicht verstanden...ich meinte dass es in diesem Fall keinerlei Conditions oder sonstwas bedarf weil es nur um die Rekursion an sich ging und nicht um die Umgebung der Funktion
    http://www.tty1.net/smart-questions_de.html#keepcool diesen und den folgenden Absatz solltest du dir zu Herzen nehmen 😉
    Den Link klick ich nicht mal an

    Nochmal damit es auch der letzte versteht:
    Hier ging es um das beispiel - insbesondere um die Rekursion und nicht darum alle möglichen Fehler abzufangen.



  • Bashar schrieb:

    Tim schrieb:

    In diesem Fall, bei einem nicht-total-schrottigen Compiler, bestimmt. Stichwort Tail recursion.

    Welcher Compiler macht das denn, und wann?

    Ich habe sicher keine Liste welcher Compiler was wann macht, ich habe auch nur für dieses Beispiel gesprochen. Sagen wir so: ein einigermassen aktueller gcc für eine nicht-seltsame Hardware (z.B. ohne "echten" Stack) sollte das optimieren. Ich sehe _hier_ nicht das Problem.

    Bashar schrieb:

    Die Scheme-Leute reißen sich ein Bein aus, die genauen Bedingungen zu formulieren, das ist in C++ bestimmt nicht gerade leichter.

    Das interessiert mich jetzt: Wo genau reißen die sich ein Bein aus?

    Bashar schrieb:

    So ein Feature bringt einem ja nichts, wenn man sich nicht darauf verlassen kann.

    Ich könnte frech sein und sagen, dass das dann für alle Optimierungsmaßnahmen gilt. Aber ich (glaube ich) weiss worauf du hinaus willst.



  • Kuldren schrieb:

    Hier ging es um das beispiel - insbesondere um die Rekursion und nicht darum alle möglichen Fehler abzufangen.

    Aha. Als Poster eines Beispiels™ verbietest du jegliche Kritik. Wie auch immer, trotzdem kein Grund, gleich so zu reagieren.



  • Kuldren schrieb:

    pumuckl schrieb:

    http://www.tty1.net/smart-questions_de.html#keepcool diesen und den folgenden Absatz solltest du dir zu Herzen nehmen 😉
    Den Link klick ich nicht mal an

    Du wirst es nicht glauben: es war tatsächlich als Hilfe gedacht und nicht als flame. Dass du dich gleich von allem und jedem persönlich angegriffen fühlst ist hier im Forum keine besonders hilfreiche Grundeinstellung und sorgt nicht unbedingt dafür dass du ernst genommen wirst (wie Fellhuhns Reaktion deutlich gezeigt haben dürfte).



  • Nexus schrieb:

    Kuldren schrieb:

    Hier ging es um das beispiel - insbesondere um die Rekursion und nicht darum alle möglichen Fehler abzufangen.

    Aha. Als Poster eines Beispiels™ verbietest du jegliche Kritik. Wie auch immer, trotzdem kein Grund, gleich so zu reagieren.

    Haha...klar...nach dem was da so steht ist das ein Grund so zu reagieren..

    pumuckl schrieb:

    Kuldren schrieb:

    pumuckl schrieb:

    http://www.tty1.net/smart-questions_de.html#keepcool diesen und den folgenden Absatz solltest du dir zu Herzen nehmen 😉
    Den Link klick ich nicht mal an

    Du wirst es nicht glauben: es war tatsächlich als Hilfe gedacht und nicht als flame. Dass du dich gleich von allem und jedem persönlich angegriffen fühlst ist hier im Forum keine besonders hilfreiche Grundeinstellung

    Mir ist egal als was es gedacht war - es hat sich so gelesen. Und die Grundeinstellungen hier im Forum sind mir ebenfalls herzlich egal. Ich wollte dem Threadersteller helfen und keine Seitenkommentare hören die ohnehin nichts mit dem Thema zu tun haben. Es ging um das Thema Rekursion bzw wie man die Aufgabe lösen kann und nicht darum irgendwelche Fehler abzufangen die ohnehin nicht auftreten werden. (Negative Zahlen) - Außerdem werden da sicher nur positive Zahlen übergeben.

    und sorgt nicht unbedingt dafür dass du ernst genommen wirst (wie Fellhuhns Reaktion deutlich gezeigt haben dürfte).

    Zum Einen...ja...ich finde es wirklich schlimm von Leuten deren Nicknames "Fellhuhn" und "Pumuckl" sind nicht ernst genommen zu werden - Und zum Anderen zeigt "Fellhuhn"s Reaktion nichts anderes als eine kindische Reaktion auf eine Erklärung.



  • pumuckl schrieb:

    Sich über das Vorhandensein oder nichtvorhandensein eines solchen Features den Kopf zu zerbrechen bevor der Profiler einem erklärt, dass die Rekursion tonnenweise Stack vernascht fällt mal wieder unter das Thema Premature Optimization

    Zu wissen ob der Speicherverbrauch linear in der Zahl der Iterationen oder konstant ist fällt nicht unter Optimierung.



  • Kuldren schrieb:

    Mir ist egal als was es gedacht war - es hat sich so gelesen. Und die Grundeinstellungen hier im Forum sind mir ebenfalls herzlich egal.

    Dann kanns dir auch egal sein was für Seitenkommentare kommen. Und uns kanns egal sein was du davon hälst. Schließlich wollen wir mit den Kommentaren und weiteren Erläuterungen auch hauptsächlich dem Threadersteller helfen. Und ob die Kommentare was mit dem Thema zu tun haben entscheidet am Besten auch der Threadersteller wenn er sie verwenden will. Ist ja aber auch egal 🤡



  • Tim schrieb:

    Bashar schrieb:

    Die Scheme-Leute reißen sich ein Bein aus, die genauen Bedingungen zu formulieren, das ist in C++ bestimmt nicht gerade leichter.

    Das interessiert mich jetzt: Wo genau reißen die sich ein Bein aus?

    R6RS, Abschnitt 11.20 wird definiert, was ein "Tail Context" ist.
    http://www.r6rs.org/final/r6rs.pdf



  • pumuckl schrieb:

    Kuldren schrieb:

    Mir ist egal als was es gedacht war - es hat sich so gelesen. Und die Grundeinstellungen hier im Forum sind mir ebenfalls herzlich egal.

    Dann kanns dir auch egal sein was für Seitenkommentare kommen. Und uns kanns egal sein was du davon hälst. Schließlich wollen wir mit den Kommentaren und weiteren Erläuterungen auch hauptsächlich dem Threadersteller helfen. Und ob die Kommentare was mit dem Thema zu tun haben entscheidet am Besten auch der Threadersteller wenn er sie verwenden will. Ist ja aber auch egal 🤡

    Nein keineswegs. Und sich hier erst informieren zu müssen wer die Witzbolde sind und was ernstzunehmen ist ist einfach nur lächerlich.
    Genau so etwas meinte ich...hat absolut nichts mit dem Thema zu tun.
    Und wenn ich mir den ersten Post so ansehe sieht es nach einer Minischulaufgabe aus - ich bezweifle dass da groß was mit Exceptions gelöst werden soll.
    Ist aber auch egal Pumuckl



  • Bashar schrieb:

    Zu wissen ob der Speicherverbrauch linear in der Zahl der Iterationen oder konstant ist fällt nicht unter Optimierung.

    Oh, dann korrigiere doch bitte gleich z.B. den Wikipedia-Artikel zu tail-recursion 🤡

    Bashar schrieb:

    Tim schrieb:

    Bashar schrieb:

    Die Scheme-Leute reißen sich ein Bein aus, die genauen Bedingungen zu formulieren, das ist in C++ bestimmt nicht gerade leichter.

    Das interessiert mich jetzt: Wo genau reißen die sich ein Bein aus?

    R6RS, Abschnitt 11.20 wird definiert, was ein "Tail Context" ist.
    http://www.r6rs.org/final/r6rs.pdf

    Ich sehe jetzt hier nicht direkt ein ausgerissenes Bein. Meinst du weil es keine einfache Definition in drei Sätzen gibt?



  • Tim schrieb:

    Bashar schrieb:

    Zu wissen ob der Speicherverbrauch linear in der Zahl der Iterationen oder konstant ist fällt nicht unter Optimierung.

    Oh, dann korrigiere doch bitte gleich z.B. den Wikipedia-Artikel zu tail-recursion 🤡

    Warum genau? Ich finde auf die Schnelle nichts korrigierenswertes.

    Ich sehe jetzt hier nicht direkt ein ausgerissenes Bein. Meinst du weil es keine einfache Definition in drei Sätzen gibt?

    Besser als einfach anzunehmen, jeder wüsste, wann genau ein Tail call eliminiert werden kann.



  • Kuldren schrieb:

    Nexus schrieb:

    Kuldren schrieb:

    Hier ging es um das beispiel - insbesondere um die Rekursion und nicht darum alle möglichen Fehler abzufangen.

    Aha. Als Poster eines Beispiels™ verbietest du jegliche Kritik. Wie auch immer, trotzdem kein Grund, gleich so zu reagieren.

    Haha...klar...nach dem was da so steht ist das ein Grund so zu reagieren..

    Mal zusammenfassen:
    a) es wird eine Frage gestellt
    b) sie wird beantwortet
    c) es erfolgt keine weitere Reaktion vom Thread-Ersteller
    d) die anderen Forenmitglieder fangen eine Diskussion an
    e) du kackst rum

    Sehr männlich.

    Kuldren schrieb:

    Mir ist egal als was es gedacht war - es hat sich so gelesen. Und die Grundeinstellungen hier im Forum sind mir ebenfalls herzlich egal. Ich wollte dem Threadersteller helfen und keine Seitenkommentare hören die ohnehin nichts mit dem Thema zu tun haben.

    Warum hast du dann weitergelesen? Selektives Lesen ist eine Fähigkeit die man sich schon in der Grundschule hätte aneignen sollen.

    Es ging um das Thema Rekursion bzw wie man die Aufgabe lösen kann und nicht darum irgendwelche Fehler abzufangen die ohnehin nicht auftreten werden.(Negative Zahlen) - Außerdem werden da sicher nur positive Zahlen übergeben.

    "wird sicher" ist meist der Anfang einer Katastrophe. Sich auf korrekte Übergaben zu verlassen ist keine kluge Entscheidung. Sollte man eigentlich wissen.

    Zum Einen...ja...ich finde es wirklich schlimm von Leuten deren Nicknames "Fellhuhn" und "Pumuckl" sind nicht ernst genommen zu werden - Und zum Anderen zeigt "Fellhuhn"s Reaktion nichts anderes als eine kindische Reaktion auf eine Erklärung.

    Der Sinn eines Nicknames scheint dir fremd zu sein. Aber ich vermute einfach mal das du einfach nur versuchst dich hier zu profilieren, einer dieser jämmerlichen Internettrolle bist, die einfach nur auf eine Gelegenheit warten im Schutze ihrerer falschen Anonymität andere Leute anzukacken, egal wie lächerlich die Situation ist. Kann man fast Mitleider haben.

    Solltest du öfter hier im Forum sein, wäre dir aufgefallen das es so wie in diesem Thread immer läuft, vor allem wenn der Ersteller nicht wiederkommt. Frage wird beantwortet und dann wird weiter über Dinge diskutiert die dabei aufkommen.

    Sich wie ein Hanswurst an der Fischtheke zu verhalten ist da sicherlich nicht hilfreich, ich weiß sowieso nicht was du dir konstruktives von deinem Heulpost erhofft hast. Aber der Threadersteller wird sicher _total_ erfreut sein, das du hier einen auf Blockwart machst. Gratulation, das hilft ihm sicher weiter.



  • Fellhuhn schrieb:

    Kuldren schrieb:

    Nexus schrieb:

    Kuldren schrieb:

    Hier ging es um das beispiel - insbesondere um die Rekursion und nicht darum alle möglichen Fehler abzufangen.

    Aha. Als Poster eines Beispiels™ verbietest du jegliche Kritik. Wie auch immer, trotzdem kein Grund, gleich so zu reagieren.

    Haha...klar...nach dem was da so steht ist das ein Grund so zu reagieren..

    Mal zusammenfassen:
    a) es wird eine Frage gestellt
    b) sie wird beantwortet
    c) es erfolgt keine weitere Reaktion vom Thread-Ersteller
    d) die anderen Forenmitglieder fangen eine Diskussion an
    e) du kackst rum

    Sehr männlich.

    Kuldren schrieb:

    Mir ist egal als was es gedacht war - es hat sich so gelesen. Und die Grundeinstellungen hier im Forum sind mir ebenfalls herzlich egal. Ich wollte dem Threadersteller helfen und keine Seitenkommentare hören die ohnehin nichts mit dem Thema zu tun haben.

    Warum hast du dann weitergelesen? Selektives Lesen ist eine Fähigkeit die man sich schon in der Grundschule hätte aneignen sollen.

    Es ging um das Thema Rekursion bzw wie man die Aufgabe lösen kann und nicht darum irgendwelche Fehler abzufangen die ohnehin nicht auftreten werden.(Negative Zahlen) - Außerdem werden da sicher nur positive Zahlen übergeben.

    "wird sicher" ist meist der Anfang einer Katastrophe. Sich auf korrekte Übergaben zu verlassen ist keine kluge Entscheidung. Sollte man eigentlich wissen.

    Zum Einen...ja...ich finde es wirklich schlimm von Leuten deren Nicknames "Fellhuhn" und "Pumuckl" sind nicht ernst genommen zu werden - Und zum Anderen zeigt "Fellhuhn"s Reaktion nichts anderes als eine kindische Reaktion auf eine Erklärung.

    Der Sinn eines Nicknames scheint dir fremd zu sein. Aber ich vermute einfach mal das du einfach nur versuchst dich hier zu profilieren, einer dieser jämmerlichen Internettrolle bist, die einfach nur auf eine Gelegenheit warten im Schutze ihrerer falschen Anonymität andere Leute anzukacken, egal wie lächerlich die Situation ist. Kann man fast Mitleider haben.

    Solltest du öfter hier im Forum sein, wäre dir aufgefallen das es so wie in diesem Thread immer läuft, vor allem wenn der Ersteller nicht wiederkommt. Frage wird beantwortet und dann wird weiter über Dinge diskutiert die dabei aufkommen.

    Sich wie ein Hanswurst an der Fischtheke zu verhalten ist da sicherlich nicht hilfreich, ich weiß sowieso nicht was du dir konstruktives von deinem Heulpost erhofft hast. Aber der Threadersteller wird sicher _total_ erfreut sein, das du hier einen auf Blockwart machst. Gratulation, das hilft ihm sicher weiter.

    Sag mal gehts eigentlich noch lächerlicher?
    Hier gings um eine simple Frage und nicht um die Aushandlung eines Friedensvertrags....
    Liest du eigentlich die Posts die du hier schreibst nochmal oder wartest du den ganzen Tag auf nichts anderes als sowas hier abzusondern?
    Sowas sinnloses hab ich echt selten erlebt...

    BTW: Alle weiteren Ausführungen hatte absolut nichts mit dem Thema zu tun und mir ist total egal wie das hier sonst läuft, aber dein rumgetrolle kannst du dir echt sparen...


Anmelden zum Antworten