Funktion() und Schwierigkeiten
-
Hallo,
mein Compiler sagt zwar alles ok, aber nach Ausführung wird der Debugger gestartet und sagt, in der ersten For Schleife stimmt was nicht. Habe schon alles versucht...Liegt es eventuell daran, dass ich den wert von der for Schleife nicht an die Funktion übergeben kann ????
#include <stdio.h> unsigned long fakultaet (int n); int main (){ unsigned long euler; unsigned long help=1; int grenze=1000000; int n; for(n=1;n<=grenze;n++) euler += help/fakultaet(n); //hier wird Debugt printf("eulersche Zahl e:%lu", euler); return 0; } unsigned long fakultaet (int n){ int i; unsigned long fak=1; for(i=0; i<=n; i++) fak=fak*i; return fak; }
-
deine funktion fakultaet liefert immer 0 zurueck.
-
Hallo,
ich übergebe jedesmal in der ersten For Schleife das n an die funktion und n ist jedesmal um eins größer.In der Funktion fakultaet läuft die For Schleife solange, bis die größe von n dann erreicht wird. Oder hat das gar nix damit zu tun.
-
ich bin mir da nicht ganz sicher, aber muss nicht um den rumpf der for-schleife immer {} auch bei einer zeile?
-
gibbets2000 schrieb:
ich bin mir da nicht ganz sicher, aber muss nicht um den rumpf der for-schleife immer {} auch bei einer zeile?
Nein, das macht man nur in Perl so
launebaer schrieb:
Hallo,
ich übergebe jedesmal in der ersten For Schleife das n an die funktion und n ist jedesmal um eins größer.In der Funktion fakultaet läuft die For Schleife solange, bis die größe von n dann erreicht wird. Oder hat das gar nix damit zu tun.
Die For-schleife läuft aber ovn 0 an, damit multiplizierst du mit 0 und damit kommt auch nur noch 0 raus
-
achso, aber bei wenn ich die 0 durch 1 ersetze, geht's auch net bei mir.
-
ja, weil du irgendwann einen ueberlauf bekommst;
unsigned long ist zu klein.
du koenntest noch double nehmen, oder wenn dein compiler
das unterstuetzt long double.
willst du dann immer noch groessere werte brauchst du
eine lib, die mit beliebig grossen zahlen rechnen kann:
http://www.swox.com/gmp/