Invariant/variant boucle
Résolu
Mrpython
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis en licence et débutante en programmation sur python.
J'ai un exercice à rendre mais je ne comprends pas bien certains points.
Après avoir écrit la définition de factorielle, on me demande de trouver un invariant et un variant de boucle.
Ma définition est :
def factorielle(n):
’’’ int -> int
Hypothèse : n > 0
Retourne le produit factoriel n!’’’
# k : int
k = 1 # on demarre au rang 1
# f : int
f = 1 # factorielle au rang 1
while k <= n:
f = f * k
k = k + 1
return f
Comme invariant j'ai pensé : f = 1*(f-1)*f
Voila, j'aimerais que l'on puisse me dire si je suis sur la bonne voie pour l'invariant...et comment trouver le variant.
Je vous remercie.
Je suis en licence et débutante en programmation sur python.
J'ai un exercice à rendre mais je ne comprends pas bien certains points.
Après avoir écrit la définition de factorielle, on me demande de trouver un invariant et un variant de boucle.
Ma définition est :
def factorielle(n):
’’’ int -> int
Hypothèse : n > 0
Retourne le produit factoriel n!’’’
# k : int
k = 1 # on demarre au rang 1
# f : int
f = 1 # factorielle au rang 1
while k <= n:
f = f * k
k = k + 1
return f
Comme invariant j'ai pensé : f = 1*(f-1)*f
Voila, j'aimerais que l'on puisse me dire si je suis sur la bonne voie pour l'invariant...et comment trouver le variant.
Je vous remercie.
A voir également:
- Invariant/variant boucle
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peux-tu utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
as-tu vérifié avec quelques exemples que ton invariant était vrai?
peux-tu utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
as-tu vérifié avec quelques exemples que ton invariant était vrai?
Bonsoir,
J'ai compris qu'un invariant est une expression mathématiques qui est vraie en entrée, à la fin de chaque tour et en sortie de boucle.
Le variant lui est un entier positif en entrée de boucle, il diminue à chaque tour et vaut 0 en sortie de boucle. Donc pour moi le variant est un peu l'inverse de la définition de base de type:
def factorielle(n):
"""int->int
hypothèse : n>=0
Retourne le produit factoriel n!"""
# k : int
k=n # on démarre au rang 1
# f : int
f=1 # factorielle au rang 1
while k!=0:
f=f*k
k=k-1
return f
Merci pour votre aide
J'ai compris qu'un invariant est une expression mathématiques qui est vraie en entrée, à la fin de chaque tour et en sortie de boucle.
Le variant lui est un entier positif en entrée de boucle, il diminue à chaque tour et vaut 0 en sortie de boucle. Donc pour moi le variant est un peu l'inverse de la définition de base de type:
def factorielle(n):
"""int->int
hypothèse : n>=0
Retourne le produit factoriel n!"""
# k : int
k=n # on démarre au rang 1
# f : int
f=1 # factorielle au rang 1
while k!=0:
f=f*k
k=k-1
return f
Merci pour votre aide
donc 123=123 te semble un bon invariant?
l'invariant que tu proposes te semble-t-il correspondre à la définition?
c'est quoi une définition de base de type?
peux-tu utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
l'invariant que tu proposes te semble-t-il correspondre à la définition?
c'est quoi une définition de base de type?
peux-tu utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
peux-tu décrire ce que tu comprends de ces définitions?