Speocherzugrifffheler
-
hi, wolte ig nur kurz n progg für die berechnung von fakultäten on zahlen schreibn, aber es kommt immer diese ausgaen (77 ist vion mir iegegeebn und is egal, tritt auch bei anderen zahlen auf, die nr des fehlers ist jedesmal anderst,a ber immer in dem bereich):
code:
#include <iostream> #include <cstdlib> using namespace std; typedef unsigned int uint; uint fak(uint zahl); int main() { uint zahl; cout << "Bitte eine Zahl eingeben, von der die Fakultät berechnet werden soll!" << endl; cin >> zahl; cout << "Die Fakultaet ist: "<< fak(zahl) << endl; return EXIT_SUCCESS; } uint fak(uint zahl) { if(zahl == 0) return 1; return zahl*fak(zahl - 1); }ausgabe:
Bitte eine Zahl eingeben, von der die Fakultät berechnet werden soll! 77 /bin/sh: line 1: 6254 Speicherzugriffsfehler ./helloworld Betätigen Sie die Eingabetaste, um fortzufahren!log:
cd '/home/lukas/src/helloworld/debug' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k gmake all-recursive gmake[1]: Entering directory `/home/lukas/src/helloworld/debug' Making all in src gmake[2]: Entering directory `/home/lukas/src/helloworld/debug/src' gmake[2]: Für das Ziel »all« ist nichts zu tun. gmake[2]: Leaving directory `/home/lukas/src/helloworld/debug/src' gmake[2]: Entering directory `/home/lukas/src/helloworld/debug' gmake[2]: Für das Ziel »all-am« ist nichts zu tun. gmake[2]: Leaving directory `/home/lukas/src/helloworld/debug' gmake[1]: Leaving directory `/home/lukas/src/helloworld/debug' *** Erfolg ***
-
Die Bedingung in der if-Abfrage wird niemals wahr, dadurch landest du in einer Endlos-Rekursion, die dir früher oder später den Stack zumüllt. Technisch benötigst du dort eine ODER-Verknüpfung (||).
(und praktisch hat die Funktion überhaupt nichts mit Fakultäten zu tun)