Fakultät programmieren??
-
Hallo zusammen,
kann mir jemand sagen wie ich am einfachsten eine Fakultät programmiere??
Z.b. wenn ich das Taylor polynom programieren will..????
schonmal danke
-
Fakultät
n*(n-1)! n > 0 n! = 1 n = 0
in Programmcode:
int fak(int n) { if(n==0) return 0; else return n * fak(n-1); }
-
mit der Funktion kannst du aber nur bis 12! rechnen oder so - danach kommt es zu einem Zahlenüberlauf - bin jetzt zu faul nachzuprüfen wie weit es funktioniert
wenn n größer wird musst du einen Datentyp mit größeren Fassungsvermögen wählen
-
Danke, jo sonst muss ich wohl "double" nehmen wenn´s über 12 hinaus geht!!!
-
mit double kriegst du irgendwann auch probleme. mit unsigned long long hast du noch ein paar mehr stellen, aber nicht wesentlich viel mehr.
-
An Vertexwahn:
Soweit ich das sehe, würde Deine Funktion immer eine 0 zurückliefern. Der korrekte Code müsste so lauten:int fak(int n) { if(n==1) //Hier war return 1; //der Fehler else return n * fak(n-1); }
-
Besserwisser schrieb:
Der korrekte Code müsste so lauten:
Was gibt das bei fak(0)?
-
Stimmt. Das würde nicht funktionieren. Also auf ein neues:
[cpp]unsigned int fak(unsigned int n) //Gibt es bei C# unsigned?
{
/if (n<0) //Wenn es kein unsigned gibt
return 0;
else/
if(n<=1)
return 1;
else
return n * fak(n-1);
} [cpp]
-
war nur ein Tippfehler - das war a richtig:
n*(n-1)! n > 0 n! = 1 n = 0
aus dem 1er wurde halt ein nuller