Bonjour,

Ce bout de programme récursif avec la variable locale truc fonctionne comme je le veux

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
compteur=0
 
def recurs(truc,chemin):
    global compteur
    if truc==0 and chemin==5:
        compteur+=1
        print("fin")
    elif truc==0 and chemin!=5:
        compteur+=1
        print("reste nul mais pas bon chemin")
    else:
        for i in range(0,2):
            compteur+=1
            print(truc, "    ", chemin,"   ",i,"     compteur : ", compteur)
            recurs(truc-1, chemin+i)
 
recurs(9,0)
J'aurais en fait besoin de remplacer la variable truc (une valeur entière), par une classe dont la valeur entière serait truc.reste. À cause de la récursivité, je crée une copie de l'instance truc2 en truc, histoire de "localiser" l'instance. Pourtant ça ne marche pas. Ci-dessous le programme qui ne marche pas :

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
20
21
22
23
24
25
26
import copy
global compteur
compteur=0
class Objet:
    def __init__(self,reste):
        self.reste=reste
def coup(truc):
    truc.reste-=1
    return truc
truc=Objet(9)
 
def recurs(truc2,chemin):
    truc=copy.copy(truc2)
    global compteur
    if truc.reste==0 and chemin==5:
        compteur+=1
        print("fin")
    elif truc.reste==0 and chemin!=5:
        compteur+=1
        print("reste nul mais pas bon chemin")
    else:
        for i in range(0,2):
            compteur+=1
            print(truc.reste, "    ", chemin,"   ",i,"     compteur : ", compteur)
            recurs(coup(truc), chemin+i)
recurs(truc,0)