Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 ITPS - Secondo Anno
 Algoritmi e Strutture Dati + Lab.
 uscire da una funzione ricorsiva

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
Clicca qui per sottoscrivere questa Discussione.
    

V I S U A L I Z Z A    D I S C U S S I O N E
john84 Inserito il - 27/12/2007 : 10:25:32
ciao
dal main() chiamo una funzione trova_nodo() che si trova in un file Albero_bin.h .
la funzione contiene una chiamata a se stessa.
vorrei che quando si verifica una condizione deve uscire dalla funzione immediatamente, senza risalire nello stack restituendo la posizione in cui si trova in quel momento.


template <class T>
typename BinAlbero<T>::posizione BinAlbero<T>::trova_nodo(T a, posizione p){

if (a==leggiNodo(p)){
//esci dalla funzione e restituisci p
}

if (!sinistroVuoto(p)){
trova_nodo(a, figlioSinistro(p));

}

if (!destroVuoto(p)){
trova_nodo(a, figlioDestro(p));
}

}

3   U L T I M E    R I S P O S T E    (in alto le più recenti)
genius Inserito il - 27/12/2007 : 15:05:02
Citazione:
Messaggio inserito da john84

grazie genius mi sei stato molto di aiuto.




di niente ;)

cmq mi sn accorto ke trovato nn serve :P puoi usare direttamente nell'if
"if(a != legginodo(p))"

inizialmente avevo fatto diversamente, ma adesso puoi toglierlo ;)
john84 Inserito il - 27/12/2007 : 14:08:00
grazie genius mi sei stato molto di aiuto.
genius Inserito il - 27/12/2007 : 13:11:49
"uscire direttamente senza risalire lo stack" è impossibile... in ogni caso questa funzione nn funziona (scusa il giro di parole :P) tranne il caso in cui il nodo cercato è proprio la radice perchè manca qualche assegnazione...

io la farei così:



template <class T>
typename BinAlbero<T>::posizione BinAlbero<T>::trova_nodo(T a, posizione p){

    bool trovato;
    posizione q = NULL; // devi assegnare a q il valore che per te significa "nessun valore", per esempio: NULL, oppure NIL
    trovato = a==legginodo(p);

    if(!trovato){
        if(!sinistroVuoto(p)){
            q = trova_nodo(a, figlioSinistro(p));
        }

        if (q != NULL && !destroVuoto(p)){ // ovviamente vale lo stesso discorso per questo 'NULL'
            q = trova_nodo(a, figlioDestro(p));
        }
    }else
        q = p;

    return q; // q sarà NULL se il nodo non esiste ;)
}

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,06 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000