Fakultät
-
Darf ich dich darauf aufmerksam machen, daß deine Funktion 'fakul()' absolut nichts mit Fakultäten zu tun hat? Die Funktion quadriert f und ruft sich dann (rekursiv) selber auf.
PS: Und die Steuerung über globale Variablen ist auch miserabel ;))
-
Mh- ja richtig.
Quadrieren.
Aber es kommt ja auch nicht auf die Rechnung an, sondern einfach aufs rekursive Aufrufen.
Und das funktioniert irgendwie nicht.
Was ist an den globalen Variablen schlecht?
-
777 schrieb:
Mh- ja richtig.
Quadrieren.
Aber es kommt ja auch nicht auf die Rechnung an, sondern einfach aufs rekursive Aufrufen.
Und das funktioniert irgendwie nicht.Rekursives quadrieren? Cool

-
Wie äußert sich denn dieses "funktioniert nicht"?
Ehe ich es vergesse: An den globalen Variablen ist vor allem eins schlecht - sie sind global (und damit für jeden zugreif- und veränderbar). Wenn du die Möglichkeit hast, solltest du lieber mit Parametern Informationen übergeben.
(und in deinem Beispiel brauchst du nicht einmal Rekursion - eine einfache Schleife reicht auch)
-
Ja- eine einfache Schleife reicht fast immer.
Aber ich wills ja gerne rekursiv machen, ums zu lernen.
Funktioniert deswegen nciht, weil das Programm sobald ich ne Zahl eingebe beendet wird.
-
777 schrieb:
Funktioniert deswegen nciht, weil das Programm sobald ich ne Zahl eingebe beendet wird.
DieFetteElke schrieb:
Schau mal die C++ oder Konsolen FAQ an.
-
Das ganze funktioniert in etwa so
#include<iostream> using namespace std; long fakultaet(int n) //Es kann laut Definition nur die Fakultät einer positiven Ganzzahl bestimmt werden { if(n==0) return(1); //Laut Definition else if(n > 0 && n < 17) // < 17 wegen Zahlenbereichsgrenze der long int return(n * fakultaet(n-1)); else return(0);//Fehler; } int main() { cout<<"3! = "<<fakultaet(3)<<endl; return(0); }Weiß nicht genau ob du da auch den Operator überladen kannst
-
Vox 3D ... vllt. ließt du mal was andere schon Ewigkeiten vor dir gepostet haben ...
-
Ich will ja garnicht die Lösung haben oder Quelltexte, die garantiert funktionieren, sondern eigentlich interessiert mich nur der Fehler in meinem Programm.
Ob es jetzt doof programmiert ist, weil globale Variablen vorkommen ist auch nicht so wichtig... ich meine die reine Logik in meinem Programm scheint ja irgendwo falsch zu sein für den Compiler.
Und diesen Logikfehler suche ich.Und jetzt nochmal die Fakultätsversion:
#include <iostream> using std::endl; using std::cout; using std::cin; void fakul(int); int oft=0; int main() { int f=0; cin >> f; fakul(f); cout << "So das wars" << endl; getchar(); } void fakul(int f) { oft++; cout << f << endl; f = f*(f+1); if(oft < 1000) fakul(f); else return; }
-
Hast du denn endlich den Hinweis der fetten Elke befolgt und dich in der Konsolen-FAQ umgesehen? (dort steht auch drin, warum getch() alleine nicht ausreicht, um die Konsole geöffnet zu halten)
-
Du solltest doch in der FAQ mal nachschauen.
Das Problem ist (von der schlechten Programmierung abgesehen), dass dein Programm zwar durchläuft, aber sofort danach beendet wird. Wenn du genau hinschaust, wirst du vielleicht sehen können, dass die Shell mal kurz aufblitzen wird.
Das ist ein bekanntes Problem. Deswegen -> FAQ
-
Ich dachte schon ich schreib mit unsichtbarer Tinte, aber man kann es anscheinend doch sehen.
-
Dein Hinweis war ja jetzt schon wesentlich detailierter.
Aber wenn fette Elke meint ich sollte mir FAQ's durchlesen... die seitenlang sind - dann ist das nicht gerade hilfereich^^Naja- aber ich kann mir das ja mal anschauen.
cya
David
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-194851.html
Hab mir den Artikel ja jetzt mal ganz durchgelesen.
Aber da wird eher fumgefetzt als geholfen...-.-
-
Führe das Konsolenprogramm doch einfach in einer Konsole aus. Vielleicht kannst Du anhand des Verhaltens dort sogar selbst herleiten, warum sich das Programm am Ende schließt.
-
Das ist nicht der FAQ-Thread, das ist der Versuch eines (entschuldige den Ausdruck) Wichtigtuers, Halbwissen zu verbreiten. Die Konsolen-FAQ erreichst du hier.
-
Ich führe das Programm in einer Konsole aus.
Zudem der Code von Vox 3d ist fast der selbe, wie meiner und funktioniert auch nicht. ^^
-
Kauf dir ne Playstation 3
-
mhh...
zu teuer.
-
777 schrieb:
Aber wenn fette Elke meint ich sollte mir FAQ's durchlesen... die seitenlang sind - dann ist das nicht gerade hilfereich^^
Es soll so komische Leute geben, die meinen es ist normal erst die FAQ anzuschauen, damit man nicht schon wieder die selbe Frage stellt.