Soyez le premier à donner votre avis sur cette source.
Snippet vu 16 938 fois - Téléchargée 66 fois
Option Explicit ' Pour ceux qui ne connaitraient pas le principe d'une factorielle, ' c'est de multiplier un chiffre par tous ses inférieurs .. par ex : factorielle ' de 5 = 5 * 4 * 3 * 2 * 1 donc = 120. Pour calculer ceci en informatique, ' on a besoin d'une fonction récursive (en l'occurence la fonction "Factorielle") ' qui s'appelle elle-même jusqu'à ce que le chiffre à calculer soit égal à zéro, ' sachant que factorielle de zéro = 1 ' Private Function Factorielle(p_Number As Integer) As Long If p_Number = 0 Then Factorielle = 1 Else Factorielle = Factorielle(p_Number - 1) * p_Number End If End Function Private Sub Command1_Click() Dim Num As Integer Dim Fac As Long Num = Text1.Text Fac = Factorielle(Num) MsgBox "Factorielle (" & Num & ") = " & Fac, vbOKOnly, ":)" End Sub Private Sub Form_Load() Top = (Screen.Height - Form1.Height) / 2 Left = (Screen.Width - Form1.Width) / 2 Form1.Width = 3195 Form1.Height = 2310 Form1.Caption = "Calcul d'une factorielle" Command1.Width = 2175 Command1.Height = 375 Command1.Left = 480 Command1.Top = 960 Command1.Caption = "&Factorielle ?" Text1.Width = 2175 Text1.Height = 285 Text1.Left = 480 Text1.Top = 360 Text1.Text = "5" End Sub
22 nov. 2005 à 17:07
elle est facile tout de même ;o)
petit conseil pour sauver une itération:
If p_Number <=1 Then ' met 1 a la place de 0 ... ca change rien dans le calcul de mettre le 0 ! ...
Factorielle = 1
Else...
10/10
19 avril 2003 à 19:39
si je peut me permettre...uun autre méthode
Une fonction récursive peut etre transformée en répétitive chaque fois que la recursivité est terminale.Elle est dite terminale lorsque dans le bloc de la fonction ou de la procédre, il n'y a pas d'instructions qui suivent l'appel récursif, comme c'est le cas pour ta fonction.
tu aurais pu donc ecrire
function factorielle(p_number)
résultat =1
pour k=1 à p_number
résultat=résultat * k
next k
factorielle= résultat
end function
13 avril 2001 à 14:57
12 avril 2001 à 23:01
pour trier un tableau de 10000 mots de longueur comprise entre 5 et 14 lettres, un vieu P133 met 3.8s (sans avoir compilé le code de manière optimale )
12 avril 2001 à 22:54
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.