[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

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
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


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

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