Menu

Problème de fonctions récursives [Résolu]

hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention - 28 janv. 2018 à 19:26 - Dernière réponse : le père. 6029 Messages postés mardi 15 mai 2012Date d'inscription 12 février 2018 Dernière intervention
- 28 janv. 2018 à 22:08
Bonjour,

Je cherche à boucler pour tous les termes d'une liste sous cette forme :

var maListe = [
  [
    "chaine1"
  ],
  9,
  "chaine2",
  [
    true,
    [
      'chaine3',
      4,
      [
        "chaine4",
        false,
        "chaine5"
      ],
      undefined
    ],
    4674
  ]
];


Et j'ai donc programmé la fonction suivante pour parcourir chaque élément de cette liste :

function boucler(liste) {
    if (Array.isArray(liste)) {
        for (i = 0; i < liste.length; i++) {
            boucler(liste[i]);
        }
    }
    else
        document.write(liste.toString() + "<br />");
}


Ma question est la suivante : pourquoi, lorsque j'appelle la fonction boucler avec pour argument ma liste, certains termes n'apparaissent pas ? Avec cette liste, "9", "undefined" et "4674" n'apparaissent pas.

Merci pour votre aide,
hcp7kuz
Afficher la suite 

3 réponses

Répondre au sujet
le père. 6029 Messages postés mardi 15 mai 2012Date d'inscription 12 février 2018 Dernière intervention - 28 janv. 2018 à 22:02
0
Utile
2
Bonjour

Tu cumules deux problèmes :
1 - ta variable i étant globale, quand tu quittes ta fonction 'boucler' appelée récursivement, tu continues ta boucle avec la dernière valeur utilisée pour i, et non pas la valeur qu'elle avait avant d'appeler 'boucler'. Ajoute var i; à l'intérieur de la fonction, et tu vas récupérer l'affichage du '9'. Tu n'aurais pas fait cette erreur si tu avais utilisé le mode strict.
2 - undefined n'a pas de méthode 'toString', donc ton script plante au moment d'afficher le 'undefined'
hcp7kuz 218 Messages postés mardi 18 août 2015Date d'inscription 3 février 2018 Dernière intervention - 28 janv. 2018 à 22:05
Autant pour moi, merci pour ton aide. Les deux problèmes corrigés, tout marche.
le père. 6029 Messages postés mardi 15 mai 2012Date d'inscription 12 février 2018 Dernière intervention - 28 janv. 2018 à 22:08
De rien :-)
Commenter la réponse de le père.