IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Portée de variable et recursivité


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut Portée de variable et recursivité
    Bonjour,

    J'ai un problème avec une fonction recursive de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Sub mafonction(ByVal liste As List(Of Point))
            Dim copie As New List(Of Point)
            For i As Integer = 0 To liste.Count - 1
                copie = liste
                copie.Add(liste(i))
                mafonction(copie)
            Next
        End Sub
    Le soucis c'est que les variables donnent n'importe quoi. Tout ce comporte comme si liste et copie étaient des variables public et du coup dans le for quand i passe pas exemple à 1, je ne retouve pas la même valeur de liste que lorsque i était à 0

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    dis nous plutot ce que tu veux faire, parce que là vu le code je ne vois pas du tout ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Dim copie As New List(Of Point)
    si c'est pour mettre directement autre chose dans la variable copie ca sert à rien de faire un new


    à chaque tour tu mets dans copie la variable que tu recois en paramètre de la fonction
    puis tu ajoutes dans copie un element de liste (qui y est déjà vu que tu dis que copie recoit liste)
    ensuite copie = liste fait que l'element ajouté n'apparait plus vu que tu remets la liste de base dedans
    et ca c'est juste sur un niveau, j'ai pas regardé en récursivité ce que ca fait comme effet (je me demande s'il y a une sortie à la récursivité d'ailleurs)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    En fait le but est d'ajouter un point à une liste jusqu'à un certains moment où il y a une sortie de la recursivité (que je n'ai pas mis pour ne pas compliquer).
    Mais si tu veux le problème est le suivant :
    j'appelle mafonction({point1}) (1er niveau de recursivité)
    cette fonction crée la liste copie en ajoutant en plus point2 : {point1,point2} et fait un appel mafonction({point1,point2}) (2eme niveau de recursivité)
    après il se passe des trucs et ça fini par sortir à un moment du niveau 2 de la recursivité et on revient au niveau 1. On aimerais alors que liste={point1}. Au lieu de ça liste={point1,point2} (voir plus de point s'il y en a qui se sont ajoutés dans d'autres niveau de recursivité.

    Si tu veux mon soucis c'est de ne pas parvenir à retrouver l'argument de ma fonction au bon niveau de recursivité, il n'y a que l'argument du plus bas niveau que j'ai à chaque fois

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       Sub mafonction(ByVal liste As List(Of Point))
            For i As Integer = 0 To liste.Count - 1
                liste.Add(liste(i))
                mafonction(liste)
            Next
        End Sub
    ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 676
    Par défaut
    Ok mais après la fonction doit evoluer et pouvoir faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        Sub mafonction(ByVal liste As List(Of Point))
            Dim copie As New List(Of Point)
            Dim supplementaires As New List(Of Point)
            supplementaires = PointsSup()
            For i As Integer = 0 To liste.Count - 1
                copie = liste
                copie.Add(supplementaires(i))
                mafonction(copie)
            Next
        End Sub
    Et là la solution n'est plus applicable je pense, il faut retrouver l'argument

Discussions similaires

  1. [FLASH MX] Portée des variables ???
    Par mic79 dans le forum Flash
    Réponses: 2
    Dernier message: 08/02/2005, 10h21
  2. Portée des variables vbscript vers ASP
    Par Immobilis dans le forum ASP
    Réponses: 3
    Dernier message: 03/11/2004, 10h14
  3. [XSL]Problème de portée des variables
    Par djulesp dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 17/09/2004, 10h34
  4. [Portée] portée des variables
    Par parksto dans le forum Langage
    Réponses: 7
    Dernier message: 09/05/2004, 21h05
  5. [FLASH MX 2004][XML]portée de variable
    Par marco_ dans le forum Flash
    Réponses: 8
    Dernier message: 29/04/2004, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo