2016-11-18 4 views
0
// factorial calculator 
    #include <iostream> 
    using namespace std; 

    long factorial (long a) 
    { 
     if (a > 1){ 

     return (a * factorial (a-1)); }//function calling itsself 
    else 
    return 0; 
    } 

    main() 
    { 
    long number = 2; 
     cout << number << "! = " << factorial (number); 

    } 

Ich bin Begginer Lernobjekte und Klassen. Ich bekomme Code aus meinem Kontext, aber es wird ein Fehler angezeigt. wie return-Anweisung arbeitet, wenn sein Wert 0 aus 0 wird gesetzt, wenn es zurückgeben 1 Ausgang 2 ist, wenn es 3 zurückzukehren Ausgang ist 6 ähnlich 4 ist 8.setzen verschiedene Werte in Return-Anweisung von C++

+0

Bitte verfolgen Sie die Rekursion auf Papier (oder mit Ihrem Debugger) für 'Fakultät (2)', zum Beispiel, und Sie werden Ihr Problem sehen ... –

Antwort

0

Hier ist ein Rechner faktorielles zu berechnen

Das Aufrufen einer Funktion in sich selbst wird im Allgemeinen als schlechte Praxis angesehen, also vermeiden Sie es. Verwenden Sie long long, wenn Sie größere Zahlen benötigen. Versuchen Sie außerdem, weitere Informationen zu Ihrer Frage bereitzustellen.

+0

Ah ja, ich habe das behoben – user7777777

+0

Und nur noch mehr zu sein pedantisch, 'Faktorial ((lang lang) INT_MAX + 1)' wird niemals enden und ruft [undefiniertes Verhalten] auf (http://stackoverflow.com/a/3948518/1270789). –

Verwandte Themen