Problème de fonctions récursives
Résolu
hcp7kuz
Messages postés
243
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je cherche à boucler pour tous les termes d'une liste sous cette forme :
Et j'ai donc programmé la fonction suivante pour parcourir chaque élément de cette liste :
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
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
A voir également:
- Problème de fonctions récursives
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Notice de fonctionnement - Guide
- Durée de fonctionnement processeur - Forum Processeur
- Fonctions excel en anglais - Guide
- Main a cessé de fonctionner autocom ✓ - Forum Windows
1 réponse
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'
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
Messages postés
243
Date d'inscription
Statut
Membre
Dernière intervention
23
Autant pour moi, merci pour ton aide. Les deux problèmes corrigés, tout marche.
Utilisateur anonyme
De rien :-)