Prob de fonction

cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006 - 17 août 2004 à 18:12
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 18 août 2004 à 17:16
salut a tous
j'ai créé une fonction qui dans certains cas, doit s'appelé elle meme. comme je le pensais ca pose un probleme lors de l'execution.
comment resoudre ce probleme ?
merci d'avance

18 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
17 août 2004 à 18:21
Ce n'est pas ca qui pose un problème, sauf s'il y une récurrence infinie (la fonction s'appelle sans fin). Normalement, une fonction peut s'appeler elle même, cela ne pose aucun problème. Il suffit de voir les dizaines de sources qu'il y a ici sur le calcul de factorielle en utilisant la méthode récursive.
0
cs_flatou Messages postés 92 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 22 février 2006
17 août 2004 à 18:54
apres avoir lu ta reponse, j'ai regardé mon code et en effet c'etait une erreur de code de ma part
merci pour la reponse en tt cas
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
17 août 2004 à 19:11
la recursion c'est surtout a utiliser pour les formes arborescentes (parcour d'un arbre)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2004 à 08:31
La récursion est pratique pour éviter de taper une centaine de boucles imbriquées, mais c'est tout de même à éviter pour implémenter une simple boucle car on y perd en efficacité : l'appel de fonction est plus long que le parcours d'une boucle !

DarK Sidious

[Responsable API/VB du site www.ProgOtoP.com]
Téléchargez ProgOtoP API Viewer
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
18 août 2004 à 09:09
vive la récursivité,

une des notions ultime d'une bonne programmation (ceci dit, avec des boucles, on fait déjà bcp de choses)

si les param st passé en adresse, la seule perte de tps est l'empilage du contexte

++

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 16:49
pour la recursion, il faut mieux eviter que la fonction qui s'appel recurisivement en appel egalement d'autre (c'est des histoire de prédiction de branchement)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 16:52
magic_Nono> ca change quoi de passer par adresse ou par valeur (passer par adresse, c'est bien passer un pointeur)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 16:57
oui, en c ya pas de passage par adresse, on peut au mieux passer un pointeur (par valeur, toujours)
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 16:59
Donc autant de push, et même efficacité, n'est-ce pas?
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
18 août 2004 à 16:59
par valeur, une copie est effectuée,
=> perte de tps & de place....

je pensais qu'un kaid comme toi maitrisais ça, je suis surpris
mé C po grave

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:02
ca depend si on parle de c ou c++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 17:03
bah oui, passer un pointeur, c'est passer un entier, c'est pareil
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 17:04
Si tu parles de référence, il faut prononcer (du moins écrire) le mot
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:07
passage par adresse = passage par reference

je sais on peut confondre avec passage par pointeur mais faut faire gaffe
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 17:09
ah bon, moi adresse me fait penser à pointeur, mais si tu le dis.
De toute facon, je ne sais pas vraiment comment se passe un passage par référence dans la machine.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:12
moi non plus, mais je pense qu'il y a bien qqchose de copier sur la pile

enfin c'est a verifier
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 août 2004 à 17:15
C'est quand même différend du passage par pointeur, ca j'en suis sur
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:16
oui c'est different, on manipule la un alias de l'objet

apres verification, il y a bien une copie de l'adresse
0
Rejoignez-nous