petite question en C++

petite question en C++ - Programmation

Marsh Posté le 31-05-2001 à 10:30:30    

j'ai fais une fonction récursive, et j'aimerai que quand elle a trouvé ce qu'elle cherchait, elle s'arrete net, sans revenir en arriere.
 
Qqun a une idée ?


---------------
"l'homme est un loup pour l'homme"
Reply

Marsh Posté le 31-05-2001 à 10:30:30   

Reply

Marsh Posté le 31-05-2001 à 10:34:34    

Que veux-tu dire par revenir en arriere ?

Reply

Marsh Posté le 31-05-2001 à 10:36:17    

ben d'apres ce que je sais, les fonctions s'empile les une sur les autres (c'est crade comme meme) et a la fin elle retorne quelque chos a l'appelante, etc...
 
a mais si je l'a fait rien retourner, ça doit marché nan ?

Reply

Marsh Posté le 31-05-2001 à 10:47:36    

Ben si ta fonction est recursive terminale, ca ne pose pas de probleme, vu que la suite des operations c'est uniquement des 'return' successifs.
 
Mais j'ai l'impression que tu veux faire un 'break' mechant, et te casser d'un coup. Oui, mais dans ce cas la pile reste degueulasse avec plein d'appels de fonctions qui ne sont jamais depiles... :??:
C'est pas si crade que ca les recursions, a la fin tout est clean comme avant.
 
Ou alors tu dois trouver une solution iterative, auquel cas tu peux faire un mechant goto en plein milieu.

Reply

Marsh Posté le 31-05-2001 à 10:52:46    

je vais reflechire a tout ca tgrx...

Reply

Marsh Posté le 31-05-2001 à 11:28:03    

faudrait demander à Verdoux mais à mon avis, aucun copilo te permettra de faire ça...

Reply

Marsh Posté le 31-05-2001 à 11:30:34    

Pas de goto, c'est de la prog dégueu.
 
éssaye de faire renvoyer un booléen par ta fonction et tu fais
 
tantque pas fini faire
  fini = laFonctionQueTuVeuxRécursive()
finTantQue
 
  Je ne sais pas ce que tu veux faire exactement mais éssaye ça pour voir. Mais surtout évite les goto et les breaks, c'est vraiment trop grade surtout si d'autres gars risquent de travailler sur ton prog dans l'avenir (ou toi dans 3ans).

 

[edit]--Message édité par Moustaaki--[/edit]

Reply

Marsh Posté le 31-05-2001 à 11:35:00    

de toute façon, un goto qui sort d'une fonction, ça passera pas...

Reply

Marsh Posté le 31-05-2001 à 18:09:13    

Mais il y a les long jumps.... :D
 
ne pas taper sur la tete, non... :D

Reply

Marsh Posté le 31-05-2001 à 18:56:21    

Si ta fonction n'est pas récursive terminale et/ou tu fais plusieurs appels récursifs, une méthode générale est de lui faire renvoyer un booléen :

Code :
  1. boolean cherche(...) {
  2.     ...
  3.     if (cherche(...)) {
  4.         return true;
  5.     }
  6.     ...
  7.     if (j_ai_trouve) {
  8.         return true;
  9.     }
  10.     ...
  11.     return false;
  12. }


 
Autre avantaqge : la fonction qui va appeler cette fonction récursive pourra aussi savoir si le truc cherché a été trouvé.

 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 31-05-2001 à 18:56:21   

Reply

Marsh Posté le 01-06-2001 à 09:07:02    

juldjin a écrit a écrit :

j'ai fais une fonction récursive, et j'aimerai que quand elle a trouvé ce qu'elle cherchait, elle s'arrete net, sans revenir en arriere.
 
Qqun a une idée ?




 
La fonction doit faire un return normal, pourquoi veux-tu qu'elle s'arrete net puisquelle doit depiler ? A moins que tu ne voudrais arreter apres un certain nombre de recursions, dans ce cas tu definit une variable statique que tu incrementes et tu testes a chaque fois sa valeur.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed