[python] erreur que je ne comprends pas

erreur que je ne comprends pas [python] - Python - Programmation

Marsh Posté le 28-02-2007 à 16:35:41    

Bonjour,

 

Je me mets à Python, donc je programme des exemples à la con.
Voici mon code pour la factorielle:

 
Code :
  1. def facto( n ):
  2.     if n == 0:
  3.         return 1
  4.     print n * facto( n-1 )


Mais je n'obtiens pas du tout le résultat attendu ...
Ca fait une bonne demi-heure que j'essaie de trouver le pb, mais je ne comprends pas.

 

Par exemple, si je fais un print n après l'affichage du résultat, je n'ai pas la même valeur que celle de l'argument de ma fonction.

 

Merci.

 

Reply

Marsh Posté le 28-02-2007 à 16:35:41   

Reply

Marsh Posté le 28-02-2007 à 17:15:26    

Code :
  1. def facto( n ):
  2.     if n == 0:
  3.         return 1
  4.     return n * facto( n-1 )
  5. print facto(15)


Message édité par elpacificator le 28-02-2007 à 17:16:03
Reply

Marsh Posté le 28-02-2007 à 17:38:00    

Je vois bien que "ça marche" mais je ne saisis pas la différence.

Reply

Marsh Posté le 28-02-2007 à 18:32:26    

...

 

Tu réalises que "n" est local à ta fonction?

 

Pour quelle raison pourrais tu y accéder depuis l'extérieur de ta fonction? C'est complètement illogique...

 

Sans même parler du fait que toute la fonction est incorrecte, si on teste "facto(3)" avec ton truc il nous explose à la tronche...

Message cité 1 fois
Message édité par masklinn le 28-02-2007 à 18:34:03

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 28-02-2007 à 21:15:10    

masklinn a écrit :

...
 
Tu réalises que "n" est local à ta fonction?
 
Pour quelle raison pourrais tu y accéder depuis l'extérieur de ta fonction? C'est complètement illogique...
 
Sans même parler du fait que toute la fonction est incorrecte, si on teste "facto(3)" avec ton truc il nous explose à la tronche...


Non, tu n'as pas compris ce que je voulais dire. Voici du code :

Code :
  1. def facto( n ):
  2.     if n == 0:
  3.         return 1
  4.     print n * facto( n-1 )
  5.     print n
  6. facto(3)


 
Ici le dernier print n ne m'affiche pas Bon je viens de comprendre pourquoi le print n ne m'affiche pas ce que j'attendais.
D'ailleurs je viens aussi de comprendre le reste, c'est tellement évident  [:pingouino]  
 
Merci à tous les deux. :jap:

Reply

Marsh Posté le 28-02-2007 à 21:48:12    

:D


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed