problème d'une valeur de paramètre dans une fonction récursive
bonjour ,
j'ai voulu faire une fonction récursive qui renvoie une suite syracuse
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| def syracuse(n,resultat=[]):
resultat.append(n)
if n==1:
return resultat
else:
if n%2==0:
syracuse(n/2,resultat)
else:
syracuse(3*n+1,resultat)
return resultat
if __name__=="__main__":
print syracuse(17)
print syracuse(17) |
j'obtiens comme resultat au premier print:
Code:
[17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
qui est le résultat attendu , mais lors du deuxième print j'obtiens:
Code:
[17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
et je ne comprends pas ... pourquoi le paramètre resultat la deuxième fois garde en mémoire la valeur du premier appel de la fonction?