Pages: [1]   Go Down
Print
Author Topic: aiuto errore metodo ricorsivo stampa albero x livelli  (Read 1597 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« on: 18-10-2012, 09:25:20 »

qualcuno ha provato a fare il metodo ricorsivo per stampare l'albero a livelli, io ci stavo provando e stavo riusando quello degli anni precedenti, il problema è che dispone di 2 metodi e stavo cercando di farlo in un unico metodo dato che al prof. Bella non piace su 2, ma mi dà errore in esecuzione di stackoverflow, dove sbaglio? posto il codice dove il primo è quello su 2 metodi mentre il secondo è quello che cerco di fare in un metodo

Code:
public void stampaAlbero()
{
    nodoAlberoBst p = radice; 
    if(p!=null)
        stampaAlbero(p,0);
    else
        System.out.println("albero vuoto");
}
       
public void stampaAlbero(nodoAlberoBst subroot, int livelloAttuale)
{
    if(subroot == null)
        return;
    stampaAlbero(subroot.getDestro(),livelloAttuale+1);

    for(int liv = livelloAttuale ; liv > 0 ; liv--)
        System.out.print("\t");
    System.out.println(subroot.getEtichetta());

    stampaAlbero(subroot.getSinistro(),livelloAttuale+1);
}
 
public void stampaAlberoLivelli(nodoAlberoBst sottoradice, int livelloAttuale)
{
    nodoAlberoBst p=radice;
    if(p!=null) stampaAlberoLivelli(p,0);
    else System.out.println("L'albero è vuoto");

    if(sottoradice==null)
        return;
    stampaAlberoLivelli(sottoradice.getDestro(),livelloAttuale+1);

    for(int liv=livelloAttuale; liv>0; liv--)
        System.out.print("\t");

    System.out.println(sottoradice.getEtichetta());
    stampaAlberoLivelli(sottoradice.getSinistro(),livelloAttuale+1);
                   
}
(EDIT del mod. sistemata indentazione)
« Last Edit: 07-11-2012, 12:22:57 by reversengineer » Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #1 on: 18-10-2012, 09:25:50 »

dov'è l'errore? cosa mi sfugge?  testate
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
Gpeppe69
Apprendista Forumista
**
Offline Offline

Posts: 294



« Reply #2 on: 29-10-2012, 14:32:03 »

L'errore sta nei parametri tu richiami il metodo passi p però il metodo non prende parametri
Logged
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #3 on: 05-11-2012, 11:15:11 »

giuseppe69 e quindi come modifico il secondo metodo per farlo funzionare, perchè ho tentato di passare pure p ma non mi funzionava lo stesso
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #4 on: 05-11-2012, 11:28:53 »

Non capisco esattamente cosa è richiesto dall'esercizio.

Non è che hai il testo dato dal professore? (fai copia-incolla esatto in tal caso) Oppure un link alla pagina così leggo io stesso il testo?
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #5 on: 06-11-2012, 09:02:10 »

ciao reversengineer,
in pratica dobbiamo creare un metodo ricorsivo per stampare l'albero a livelli, senza usare struttura dati
ausiliaria. Il primo metodo con 2 funzioni è apposto, ma il prof. vuole che sia un unico metodo, quì
sto avendo problemi e non capisco dove sbaglio  pc
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #6 on: 06-11-2012, 16:31:38 »

Giust per capirci, bisogna emettere in output prima la chiave della radice, poi le chiavi dei due nodi figli della radice, poi le chiavi dei nodi figli dei figli della radice, ecc... e così via. Ho capito bene?

È questo che si intende con visita a livelli?
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
leovinci
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 251



« Reply #7 on: 06-11-2012, 22:30:56 »

si esatto 
Logged

Più dici cose stupide,più gente ti rispetta...Più parli con la testa,più gente và di fretta.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.474


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #8 on: 07-11-2012, 12:13:35 »

Questa istruzione:
Code:
    if(p!=null) stampaAlberoLivelli(p,0);
Essendo che p è lo stesso valore diverso dal null che viene passato al metodo, viene eseguita passando per p un valore diverso da null, e la successiva chiamata, rieseguirà questo codice identicamente alla precedente, all'infinito.
Non solo c'è overflow dello stack (cosa che, in altri contesti, sarebbe anche lecita, ...), ma questo avviene perché si è sbagliata la logica di chiamata ricorsiva.
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Pages: [1]   Go Up
Print
Jump to: