bonjour ,
j'ai voulu faire une fonction récursive qui renvoie une suite syracuse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
[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 : Sélectionner tout - Visualiser dans une fenêtre à part
[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?