Fonction recursive (plus simple)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 854 fois - Téléchargée 64 fois

Contenu du snippet

Pour ceux qui ne connaitraient pas du tout la récurrence, je leur met ce petit code qui illustre bien l'utilité des fonctions récursives.
Ce code permet de calculer la factorielle d'un nombre.
Vous avez besoin d'un bouton de commande et d'une textbox

Source / Exemple :


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

Conclusion :


Voila

A voir également

Ajouter un commentaire

Commentaires

codea
Messages postés
94
Date d'inscription
dimanche 9 mai 2004
Statut
Membre
Dernière intervention
6 août 2006
-
très bonne fonction récursive :o),
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
tresorsdevie
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013
-
hello,
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
ça y est !!! rubrique texte, page 2!!
Un petit avant goût :
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 )
Ca marche et c'est pour bientôt!! <|;0)

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.