Bonjour je comprend pas comment peut-on parcourir une listes chainées de manière itérative ? Et quelle est la différences avec la manière récursive ?
Merci d'avance
Bonjour je comprend pas comment peut-on parcourir une listes chainées de manière itérative ? Et quelle est la différences avec la manière récursive ?
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6element = premier Tant que element non NULL on fait quelque chose ... element = element -> suivant Fin tant que
Un algo récursif s'appelle lui-même alors qu'un algo itératif, comme le montre Souviron, consiste en une boucle faisant varier un repère.
Voici l'exemple de Souviron écrit en récursif
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 FONCTION(element) DEBUT on fait quelque chose SI element->suivant non NULL FONCTION(element->suivant) FIN SI FIN
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Mouaih, moi je ferais plutôt :
Ça permet de ne pas planter si on appelle la fonction avec NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 FONCTION(element) DEBUT SI element non NULL ALORS on fait quelque chose FONCTION(element->suivant) FIN SI FIN
A noter que comme la récursion est terminale, il y a de fortes chances pour que le compilo transforme ça en tant que.
"La haine seule fait des choix" - Koan Zen
"Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
"Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
Faites du Prolog, ça vous changera les idées !
Ma page Prolog
Mes codes sources commentés
Mon avatar : La Madeleine à la veilleuse de Georges de La Tour
C'était effectivement comme ça que je l'avais écrit initialement. Le problème de ce genre de code est que, pour éviter un test initial que tu ne feras qu'une fois (à savoir vérifier que t'appelles pas la fonction avec un élément nul) tu génères un appel récursif supplémentaire (avec toutes les contraintes qui y sont liées comme la sauvegarde du contexte, etc) et inutile (puisque t'appelles la fonction pour le NUL de la fin de liste).
Dans ce cas précis oui. Mais on parle de cas plus généraux dans lesquels la récursivité terminale n'a pas lieu d'être...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
http://emmanuel-delahaye.developpez....s_chainees.htmC'est plus sûr si il y a des risques de débordement de pile avec la récursivité (trop grande profondeur).Et quelle est la différences avec la manière récursive ?
Partager