netwebzone
Messages postés55Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention22 août 2008
-
2 déc. 2006 à 08:59
cs_italiasky
Messages postés8Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention 6 décembre 2009
-
3 déc. 2006 à 10:22
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 ;
<!-- BEGIN TEMPLATE: bbcode_code -->
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;
}
<!-- END TEMPLATE: bbcode_code -->
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 :
<!-- BEGIN TEMPLATE: bbcode_code -->
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);
netwebzone
Messages postés55Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention22 août 2008 2 déc. 2006 à 10:30
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...
mezaya
Messages postés202Date d'inscriptiondimanche 18 mai 2003StatutMembreDernière intervention 6 mars 2010 2 déc. 2006 à 11:08
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é.
Vous n’avez pas trouvé la réponse que vous recherchez ?
netwebzone
Messages postés55Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention22 août 2008 2 déc. 2006 à 11:12
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...