Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Frage zu return 0 / 1

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
27.02.2015, 12:38 Uhr
YLee



Hallo Leute,
heute habe ich etwas mit Rekursion ausprobiert, und ein Beispiel für Fakultät aus Openbook Rheinwerk genommen. Das war alles verständlich ,bis zum Ende des Programms.
Ich habe so nämlich gehabt :

C++:
#include <iostream>
using namespace std;
long int fakul (unsigned int a);

int main()
{
    unsigned int x = 0;
    cout<<"Geben Sie eine Zahl für die Berechnung der Fakultaet :";
    cin>>x;
    cout<<"Ergebnis ist :"<<fakul(x)<<endl;
    return EXIT_SUCCESS;
}
long int fakul (unsigned int a)
{
    if (a > 1)
    {
        
        return (a* fakul(a-1));
        
    }
    
    return 0;  //Diese Stelle !!!!!!!!!!!!!!!
}


Das Programm hat ständig nicht funktioniert ,egal was ich eingebe, kam am Ende nur 0 als Ergebnis der Berechnung aus.
Bis ich an der Stelle "return 0 "in "return 1" geändert habe(was auch der Standardcode aus Openbook ist),wurde endlich die Fakultät richtig berechnet.

Ich bin jetzt verwirrt, in Internet habe ich ein paar Argumente gelesen, aber dort heißt "return 0" meistens nur quasi wie "return EXIT_SUCCESS". Und dann was für eine Auswirkung hat das nun auf diesem Programm ????

Ich bedanke mich für eine Hilfe im Voraus.

-----
Edit: cpp-Tags eingefügt.

Dieser Post wurde am 27.02.2015 um 15:40 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.02.2015, 13:00 Uhr
Tommix



Hallo,
was Du da gelesen hast, trifft auf main() zu und auch auf andere Funktionen, bei denen das so geplant ist. Die Funktion fakul gibt aber das Ergebnis die Fakultät des Argumentes zurück.
a! = a*(a-1)! für a > 1 und sonst (also a nicht größer 1) 1! = 1.
Wenn Du Dir die Variablen im Debugger ansiehst oder Testweise ausgibst, wird das schnell klar:
fakul(5) = 5*fakul(4)
fakul(4) = 4*fakul(3)
fakul(3) = 3*fakul(2)
fakul(2) = 2*fakul(1)
fakul(1) = 1 und nun zurück:
fakul(2) = 2*1=2
fakul(3) = 3*2=6
usw. Wenn in dem Produkt irgenwo Null steht kommt am Ende auch Null raus.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.03.2015, 17:43 Uhr
~YLee
Gast


Danke sehr
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: