Segmentation Fault (core dumped)
-
Ich versuche das folgende Beispiel zu lösen.
#include <iostream> double a; double f(double n); double h (double n) { return n*h(n-1); } double g(double n){ return 2*f(n); } double f(double n){ return h(n)+g(n-1); } int main (){ cout << "Waehlen Sie einen Wert bitte: " << endl; cin >> a; cout << "h(" << a << ") :" << h(a) <<endl ; return 0; }
Und immer nach dem Compilieren erhalte ich Segmentation Fault Fehlermeldung.
Was heisst das eigentlich? Wann ergibt das Programm solche Fehlermeldungen und wieso?
KAnn mir jemanden vielleicht demit helfen?danke
Grüsse
-
Diesen Fehler gibt es, wenn du auf Speicherbereiche zugreifst, auf die du keinen Zugriff hast, oder wenn z.B. der Stack überläuft.
Ein guter Weg, einen Stacküberlauf zu erzeugen, ist eine rekursive Funktion ohne Abbruchbedingung zu schreiben, was dir hier ja sehr gut gelungen ist.
-
jepp die h funtion ist eine endlosrekursion,
und gabs da nicht den stack overflow error ?
-
DEvent schrieb:
jepp die h funtion ist eine endlosrekursion,
und gabs da nicht den stack overflow error ?Das einzige das ich bekomme ist:
Segmentation Fault (core dumped)
-
Und trotzdem wie bringe das Programm vom Bsp. zum Leben ??
-
Bitte, wie meinen?
-
SeppSchrot: wie lösse ich das Beispiel, wollte ich wissen.
Ich hab mich mittlerweile mit einem Program beschäftigt und wieder dieselbe Gehlermeldung :)...
Mir ist unklar, wie ich die Rekursion anwenden kann bzw. soll um keine Seg. Fault err. zu erhalten.
-
Na du musst doch der Funktion sagen, wann sie aufhören soll, sich selbst aufzurufen!!!
double h (double n) { if (n==1) //jetzt abbrechen?, return 1; // wir sind am Ende, Schluss aus, return n*h(n-1); //Ansonsten weiter rekursieren }
-
Übrigens macht die Fakultät nur bei ganzen pos. Zahlen Sinn.
-
hm.... nun verstehe ich vieso die IF Bedienung da ist...
Tja, Danke urviel!!!
Hast du vielleicht irgendwelche ein gutes Tutorial zur REkursion?
Wenn möglich mit mehreren Beispielen...LG
-
Schau mal hier im Nebenthread:
http://www.c-plusplus.net/forum/viewtopic.php?t=92001