2017-10-17 4 views
-2

j'ai besoin explication générale du code:retour 1 retour 0 en cas de factoriel

Cas1)

Dans cette fonction factoriel, si num est 0, il ne retourne 0 !, qui est 1?

Cas2) si le nombre est> = 1, return fact, quelle est sa valeur factorielle?

Je comprends que return 1 et return 0 sont à la fois pour la génération réussie du résultat.

Alors pourquoi ne puis-je pas retourner 0, dans ce cas?

double factorial(int num) 
    { 
     int fact = 1; 
     int i = 1; 
     if (num == 0) 
      return 1; 
     else 
      while (num >= i) 
      { 
       fact = fact*i; 
       i++; 
      } 
     return fact; 
+0

Vous ne renvoyez pas d'état, vous renvoyez une valeur que l'appelant peut alors utiliser. – NathanOliver

+0

"_Pourquoi ne puis-je pas retourner 0, dans ce cas? _" Quoi? Êtes-vous en train de dire que la factorielle d'un nombre différent de zéro est égale à zéro? Comprenez-vous comment fonctionne factoriel? De plus, que serait un factoriel d'un nombre négatif? Puisque votre fonction les accepte aussi. –

+0

@ AlgirdasPreidžius Je suis nouveau en C++ alors s'il vous plaît ne me parlez pas mal .. –

Répondre

0
#include <iostream> 

using namespace std; 

int factorial(int num)    //I changed this to return int since you are taking int and int*int will always be int 
    { 
     int fact = 1;    
     //int i = 1;    //dont need this 
     if (num == 0) 
      return fact;   //You can just say return `fact` or `return 1` - i like to make my code readable - s I used `return fact` 
            //I also prefer to set the value of fact as 1 here and return the 1 at bottom so we only have one return statement 
            //but thats just me - having 2 return statements should be fine if used wisely 

      /*while (num >= i)  //thispart was wrong i reedited it into a better and more efficient code below 
      { 
       fact = fact*i; 
       i++; 
      }*/ 
     else 
      { 
       while(num>1)  // so lets say we enter 4 - 4 is larger than 1 
       { 
       fact*=num;   //first step through it will be fact = fact * num; fact is 1 at first loop so it will be 1 * 4 and we put that value into fact 
       num--;    //here we set num to 3 for next loop and we repeat :D 
       } 
      } 

     return fact;    //here we return the value 
    } 


int main()       //just a normal main 
{ 
    int number; 
    cout<<"Enter number: \n"; 
    cin>>number; 
    cout<<"Factorial of "<<number<<" is "<<factorial(number); 

    return 0; 
} 

Je pense que votre question était parfaitement bien et d'être moi-même programmeur débutant, il me aide aussi quand je vois ce genre de questions. J'espère que cela aide! Bonne chance!