Accueil > Forum > > > > initialiser une liste : fonction récursive ?
initialiser une liste : fonction récursive ?
samedi 2 décembre 2006 à 08:59:00 |
initialiser une liste : fonction récursive ?

netwebzone
|
Bonjour
Je dois créer une fonction qui initialise une liste chaînée à partir
d'un nombre d'élement passé en paramètre pour la taille de la liste.
J'ai réussi à créer une version itérative de cette fonction ; Code : list initialize_list(list essai, int nb_element) { int i; for(i=1;i<=nb_element;i=i+1) { essai = insert_tail(essai,rand()%20); //fonction qui ajoute en queue de liste un élément de valeur passé en 2eme parametre } return essai; }
Mais j'ai un probleme pour créer une fonction récursive, j'ai fait ceci mais ca ne marche pas, ca me créer un seul élément : Code : list initialize2_list(list essai, int nb_element) { if(nb_element==1) { return essai = insert_tail(essai,rand()%20); } else { return essai = initialize2_list(essai,nb_element-1);
} }
Si quelqu'un peut m'éclairer... merci
Bonne journée
|
|
samedi 2 décembre 2006 à 09:59:15 |
Re : initialiser une liste : fonction récursive ?

mezaya
|
la fonction récursive doit pouvoir ajouter un element a chaque fois qu'elle est appeler.
la fonction récursive doit ressembler a ça:
list initialize2_list(list essai, int nb_element)
{
essai = insert_tail(essai,rand()%20);
if(nb_element==1)
{
// j'arrete la récursivité
return essai;
}
else
{
return essai = initialize2_list(essai,nb_element-1);
}
}
Voili,Voilou [;)]
|
|
samedi 2 décembre 2006 à 10:11:12 |
Re : initialiser une liste : fonction récursive ?

mezaya
|
désolé pour la mise en page. donc revoici la fonction :
list initialize2_list(list essai, int nb_element)
{
essai = insert_tail(essai,rand()%20);
if(nb_element==1)
{ // j'arrete la récursivité
return essai;
}
else
{
return essai = initialize2_list(essai,nb_element-1);
}
}
|
|
samedi 2 décembre 2006 à 10:30:15 |
Re : initialiser une liste : fonction récursive ?

netwebzone
|
Oh miracle ca marche :) lol
Merci beaucoup mais dis-moi, est-ce que t'aurais 5 min pour m'expliquer comment t'as fait, comment t'as réfléchi pour voir ce qu'il manquait que j'essaye de comprendre ce qui m'a échappé... enfin si tu as le temps...
Merci Bonne journée
|
|
samedi 2 décembre 2006 à 11:08:26 |
Re : initialiser une liste : fonction récursive ?

mezaya
|
pour que la récusivité marche, il faut que pour chaque appel de initialize2_list() on ajoute un element dans la liste. Or dans ton 1er code l'ajout ne se faisait que quand (nb_elment == 1) ; ce test ne sera vrai qu'une seul fois.
alors que maitenant chaque appel a initialize2_list() ajoute un element. Le test (nb_element == 1) est juste le test de fin de récusivité.
|
|
samedi 2 décembre 2006 à 11:12:57 |
Re : initialiser une liste : fonction récursive ?

netwebzone
|
ok merci  Oui c'est vrai c'était tout bête en fait, je remarquais bien que ca m'ajoutait qu'un seul élément a chaque fois mais je comprenais pas pourquoi, il fallait juste sortir l'ajout d'élément du bloc de la condition d'arrêt, ce qui est logique en fait... Merci beaucoup Bonne journée
|
|
samedi 2 décembre 2006 à 11:13:47 |
Re : initialiser une liste : fonction récursive ?

mezaya
|
un exemple :
initialize2_list(list,3)
-> insert_tail(list, X )
test(nb_element==1) // = FAUX
initialize2_list(list,2)
-> insert_tail(list, X )
test(nb_element==1) // = FAUX
initialize2_list(list,1)
-> insert_tail(list, X )
test(nb_element==1) // = VRAI
<-
<-
<-
FIN
|
|
samedi 2 décembre 2006 à 12:02:23 |
Re : initialiser une liste : fonction récursive ?

netwebzone
|
ouais exactement merci je vois mieux le truc maintenant ;)
Bonne journée
|
|
dimanche 3 décembre 2006 à 10:22:54 |
Re : initialiser une liste : fonction récursive ?

italiasky
|
Bonjour, Euh j'ai changé la fonction de la manière suivante : list initialize_list_rec(list essai, int nb_element) { if(nb_element!=0) { essai = insert_tail(essai,rand()%20; return essai = initialize_list_rec(essai,nb_element-1); } return essai; }
Elle est mieux comme ca non ? C'est pas plus "esprit récursif" ?
Merci ++
|
|
Cette discussion est classée dans : fonction, créer, liste, essai, list
Répondre à ce message
Sujets en rapport avec ce message
rang d'une liste triée et non triée [ par pinderlot ]
bonjour,J'ai lu un peu ce qui se fait sur le forum au sujet des listes et des tris, j'ai relu mes cours mais je n'ai toujours pas de solutions à mon p
Fusion de cellules pour une liste chainée [ par ouhare ]
Bonjour tout le monde. J'aurais une question concernant une fonction en C que j'appelerais merge_list(). Cette fonction est supposée fusionner 2 cellu
Liste stl et fonction constante [ par poiuytrez3 ]
Bonjour,J'ai une erreur de compilation lorsque je veux définir un cursor au début de ma liste qui est dans mon objet.La fonction est constante et le c
RegisterClassEx [ par Ziman ]
Bonjour,je me pose une tite question. En fait, je vois dans tout les code pour l'API win32 la fonction RegisterClassEx, j'ai vu qu'elle servait à cré
datagridview et événement [ par pupuce54980 ]
lut tout le monde, je recherche a créer un evenement sur un datagrd view, en fait je voudrais executer une fonction et récupérer l'index de ligne d'un
probleme avec une fonction de jointure des éléments de liste [ par cyrina84 ]
bonjour à tous, j'ai un gros probleme dans ma fonction en Ccette fonction pren en entrée une liste chainée qui contient des couples de mots (exemple:
thread [ par elbok ]
salut pour tousj'ai besoin de créer un thread qui exécutera un fonction de prototype: void traitement (struct liste *l).je suis vraiment débutanant et
liberer un emplaceemnt dans une "list" en c++ sans supprimer l'objet [ par timy94 ]
BonjourVoici mon codeCEvenement & MyClasse::Get_Evt(){ list ::iterator pEvt; list ::iterator pListEvt = m_Liste_Evt.begin(); pEvt
problème d'une fonction sur vs.net c++ [ par stgi02 ]
salut, j 'aimerai avoir des explications sur : char t; // je comprends t = (e->get_KeyChar()); // je comprends this->essai->Write((LPCVOID *)&t,sizeof
Win Api : redessiner une fenêtre [ par acryline ]
Bonjour déjà Bon voilà mon problème et je seche depuis quelques heures dessus. Ce serait sympa de m'aider .Je fais un petit programme en API windows .
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|