Page 1 sur 2

Calcul de 2**n avec une boucle conditionnelle

Publié : 10 nov. 2019 19:13
par gallica
Bonjour,

On me demande de calculer 2**n en utilisant utilisant une boucle for et une boucle conditionnelle.

Pour la boucle for, j'ai le programme suivant:
def entier(e,n):
R=1
for i in range(0,n):
R=R*e
return R

Mais pour ce qui est de la boucle conditionnelle if je ne sais pas comment m'y prendre.

Merci par avance pour votre aide.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 10 nov. 2019 22:48
par padpad
et e est initialisé comment ?

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 11 nov. 2019 18:24
par gallica
Ici, e prend la valeur 2.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 12 nov. 2019 18:53
par Errys
Essaie de ne pas utiliser de variable i, juste la variable n.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 12 nov. 2019 19:53
par matmeca_mcf1
Au passage, l'algorithme utilisé n'est pas optimal. La complexité de cet algorithme est linéaire, en $ O(n) $, il est possible de calculer une puissance avec une complexité lograithmique $ O(log(n)) $ en représentant $ n $ en base 2 et en remarquant que si $ n=\sum_{k=0}^{s}b_k2^k $ avec $ b_k\in\{0,1\} $, alors $
p^n=\prod_{k,b_k=1}p^{2^k}
$ et on calcule $ p^{2^{k+1}} $ en passant $ p^{2^k} $ au carré.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 13 nov. 2019 16:18
par fakbill
la boucle conditionnelle if
?!?
Ca n'existe pas.
Qu'est ce que tu appelles une "boucle conditionnelle"?? un while?

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 13 nov. 2019 16:24
par fakbill
def entier(e,n):
R=1
for i in range(0,n):
R=R*e
return R
On te demande 2**n donc inutile d'introduire une variable. Cela dit ça rend ton code plus general.
Quelle idée de l'appeller e??? x ok mais e???
Quelle idée d'appeller la function "entier"??? le nom d'un function doit refléter ce qu'elle fait. Ici tu peux l'appeller PowerOfTwo par exemple.
Le nom des variables est très important dans un code car de mauvais noms rendent la chose illisible.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 14 nov. 2019 19:02
par gallica
Bonsoir,

Oui effectivement c'était une boucle while qu'il fallait utiliser. J'ai choisi d'appeler ma variable e car elle faisait référence à un entier qui ici est 2.
Le choix du nom de ma fonction n'était en effet pas judicieux.

Merci pour votre aide.

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 15 nov. 2019 13:43
par fakbill
e comme entier :? Quand dira t on aux étudiants de coder en anglais?!?

Un entier qui ne mérite pas de nom plus précis, c'est plutôt I,j,k,l,m,n,p...
Un float qui ne mérite pas de nom plus précis, c'est plutôt x, y, u t, ou des choses de ce genre.
e c'est plutôt un epsilon.
M c'est une matrice.

et donc ce code avec une boucle while?

Re: Calcul de 2**n avec une boucle conditionnelle

Publié : 20 nov. 2019 12:54
par YS1
fakbill a écrit :
15 nov. 2019 13:43
Quand dira t on aux étudiants de coder en anglais?!?
Quand ils seront en école d'ingénieur et qu'il parleront anglais un peu mieux que des vaches espagnoles.