Page 1 sur 1

Calcul factoriel avec des entiers

Publié : sam. 15/janv./2005 6:15
par Guimauve
Bonjour,

Une fonction pour faire un calcul factoriel avec des entiers.
Ex. : 5! = 1*2*3*4*5 = 120

N.B. Le maximum est 34!, avec 35! le deboggeur affiche 1.#INF00.
Vivement les variables de type double !

A+
Guimauve

Code : Tout sélectionner

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Fonction Factoriel 

Procedure.f Factoriel(valeur_n.l)
     
     total.f = 1
     indice.l = 2 
     
     While (indice <= valeur_n)
          total = total * indice 
          indice + 1
     Wend
     
     ProcedureReturn total
     
EndProcedure

Publié : mer. 09/mars/2005 19:10
par novicenpure
Salut,

Tu peux aussi la définir de manière récursive :

Code : Tout sélectionner

Procedure.l Fact(n.l) 
  If n=1
    ProcedureReturn 1
  Else
    ProcedureReturn n*Fact(n-1)
  EndIf
EndProcedure 

Debug Fact(10)
Cordialement

Publié : mer. 09/mars/2005 21:42
par Le Soldat Inconnu

Code : Tout sélectionner

Procedure.l Factoriel(valeur.l) 
  Resultat.f = 1
  For n = 2 To valeur
    Resultat * n
  Next
  ProcedureReturn Resultat 
EndProcedure

For n = 1 To 12
  Debug Str(n) + "! = " + Str(Factoriel(n))
Next
plus simple comme ceci

Publié : mer. 09/mars/2005 22:55
par Guimauve
Oui je sais, j'ai pas eu le temps de poster les deux codes.

Cette procédure est la traduction d'un script Matlab qu'on m'a demandé de faire à l'université.

Le professeur nous a contraint d'utiliser un While. Par la suite de reprendre le script avec un For.

Je l'ai mis ici parce que cette fonction n'est pas parmis les fonctions de maths standard de PB.

Voilà.

A+
Guimauve

PS. Ceux qui ne connaisent pas MatLab, c'est pas grave vous ne manquez pas grand chose.

Publié : mer. 09/mars/2005 22:59
par Le Soldat Inconnu
Je l'ai mis ici parce que cette fonction n'est pas parmis les fonctions de maths standard de PB.
oui, c'est dommage d'ailleurs.

Publié : jeu. 10/mars/2005 0:19
par Frenchy Pilou
Ici la liste des 999 premiers factoriels détaillés !!!
999 factoriels
Comme cela rien à calculer :lol:
Plus qu'à espérer qu'il n'y ait pas d'erreur :roll: