Calcul factoriel avec des entiers

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Calcul factoriel avec des entiers

Message 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
novicenpure
Messages : 34
Inscription : jeu. 20/janv./2005 21:30

Message 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
Avec suffisamment de paires d'yeux, tous les bogues feront surface (Linus Torvalds).
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Guimauve
Messages : 1015
Inscription : mer. 11/févr./2004 0:32
Localisation : Québec, Canada

Message 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.
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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.
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message 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:
Est beau ce qui plaît sans concept :)
Speedy Galerie
Répondre