Bonjour. 
Je suis un élève de Terminale et je travaille actuellement sur la récursivité.
Je suis confronté à un exercice que je n'arrive pas à finir après avoir essayé tout ce que je trouvais pertinent à faire. Ici, mon code me renvoit toujours le message d'erreur suivant :
RuntimeError: maximum recursion depth exceeded in comparison
par rapport aux lignes 6, 9 puis encore, puis encore 9.... et la ligne 5 une fois que Python ait atteint le maximum de profondeur de récursivité (je ne poste pas le code exact de l'erreur ici sinon ça prendrait un bon millier de lignes).
Voici l'intitulé de l'exercice :
"Soit un la suite d'entiers définie par :
un+1 = un/2 si un est pair,
= 3 x un + 1 sinon,
Avec u0 un entier quelconque plus grand que 1.
Ecrire une fonction récursive syracuse(u_n) qui définie les valeurs successives de la suite un tant que un est plus grand que 1.
La conjecture de Syracuse affirme que, quelle que soit la valeur de u0, il existe un indice n dans la suite tel que un = 1. Cette conjecture défie toujours les mathématiciens."
Et voici le fameux code :
1 2 3 4 5 6 7 8 9 10 11 12
| from math import *
def syracuse(u_n):
valeurs=[]
if (u_n)%2==0:
return syracuse(u_n-1)/2
valeurs.append(syracuse(u_n)/2)
else:
return 3*syracuse(u_n-1)+1
valeurs.append(3*syracuse(u_n-1))
print(syracuse(10)) |
A noter qu'à cause du confinement dû au Coronavirus, mon niveau en Python est assez maigre. 
Il me faudrait d'urgence une réponse avant ce soir, s'il-vous-plaît, sinon mon devoir recevra une note proche de la bulle.
Partager