aide dm d info
Publié : 29 déc. 2015 15:14
Bonjour j'ai un dm d'info pour la rentrée mais j'ai un petit soucis. J ai ecrit toutes les fonctions (elles fonctionnent correctement) mais la derniere tourne indéfiniment et n'affiche aucun résultat! Je suppose que c'est dû a un trop grand nombre d'opération pourtant je n'arrive pas à la simplifier plus que ça. Y a-t-il une erreur? Pouvez vous m'aider svp? 
#a
def sc(u0,n):
if n<0: #cas ou n est négatif
return 'Erreur'
if n==0: #rang u0
return u0
else:
for i in range(1,n+1):
if u0%2==0:
u0=(u0//2) #si un est pair
else:
u0=(3*u0+1)//2 #si un est impair
return u0
#b
def trajectoire(u0):
list1=[]
n=0
while sc(u0,n-1)!=1: #tant que premier 1 pas atteint
list1 += [sc(u0,n)]
n+=1
return list1
#c
def temps_de_vol(u0):
return len(trajectoire(u0))-1 #nbr de termes ds trajectoire
#d
def temps_de_vol_alt(u0):
n=0
while sc(u0,n+1)>=u0: #tant que SC plus grand que u0
n+=1
return n
#e
def ne_fonctionne_pas(N):
liste_alt_max=[]
u0=0
while u0<=N:
liste_alt_max+=max(trajectoire(u0))
u0+=1
return liste_alt_max

#a
def sc(u0,n):
if n<0: #cas ou n est négatif
return 'Erreur'
if n==0: #rang u0
return u0
else:
for i in range(1,n+1):
if u0%2==0:
u0=(u0//2) #si un est pair
else:
u0=(3*u0+1)//2 #si un est impair
return u0
#b
def trajectoire(u0):
list1=[]
n=0
while sc(u0,n-1)!=1: #tant que premier 1 pas atteint
list1 += [sc(u0,n)]
n+=1
return list1
#c
def temps_de_vol(u0):
return len(trajectoire(u0))-1 #nbr de termes ds trajectoire
#d
def temps_de_vol_alt(u0):
n=0
while sc(u0,n+1)>=u0: #tant que SC plus grand que u0
n+=1
return n
#e
def ne_fonctionne_pas(N):
liste_alt_max=[]
u0=0
while u0<=N:
liste_alt_max+=max(trajectoire(u0))
u0+=1
return liste_alt_max