Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Ricorsione
Forum - C/C++ - Ricorsione

Avatar
marco390 (Normal User)
Newbie


Messaggi: 1
Iscritto: 26/06/2011

Segnala al moderatore
Postato alle 19:07
Domenica, 26/06/2011
Ciao a tutti!!!Ho la seguente lista...
List nome;
nome.push_back("c");
nome.push_back("a");
nome.push_back("s");
nome.push_back("a");

Vorrei fare una funzione void che mi stampi
casa
cas
ca
c
ca
cas
cisa

e fino ad ora ho fatto questo:

Codice sorgente - presumibilmente C/C++

  1. void stampa_stringa(List a){{
  2. if(a.begin().next().is_null()){
  3. cout<<a.begin().get()<<endl;}
  4. else
  5. {
  6. for(Iterator I=a.begin();!I.is_null();I=I.next()){
  7. cout<<I.get();}
  8. cout<<endl;
  9. a.erase(a.end());
  10. stampa_stringa(a);
  11. }
  12. }
  13. }



ma si ferma a alla prima parte,arrivando fino a c; :grr: come posso fare per terminarlo???

grazie :)




Marco...
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 12:07
Lunedì, 27/06/2011
Arriva solo fino a c perché in quel caso a.begin().next().is_null() è vera. D'altra parte, se andassi avanti anche con questa condizione potresti entrare in una ricorsione infinita.

P.S.: perché due graffe per contenere il corpo della funzione?

quello delle graffe è stata una vista :) ;ho messo apposta a.begin().next().is_null() per farlo terminare a c ;a te cosa viene in mente per poterlo fare risalire ed arrivare cosi di nuovo alla parola casa....??? - marco390 - 27/06/11 12:42
Sarebbe opportuno togliere proprio la condizione che la fa terminare, ossia a.begin().next().is_null(), poiché da c vuoi risalire a casa. Però ti serve una variabile esterna per fermare la ricorsione dopo 1 ciclo completo. - Il Totem - 28/06/11 12:47
e poi comme faccio a farla risalire....? - marco390 - 28/06/11 22:25
Crei un iteratore che va al contrario... - Il Totem - 29/06/11 13:24


"Infelici sono quelli che hanno tanto cervello da vedere la loro stupidità."
(Fligende Blatter)

"Dubitare di se stessi è il primo segno d'intelligenza."
(Ugo Ojetti)
PM