Impostare la ricorsione

R
RigelsHysaj (1550 points)
2 33 50
asked Dec 31, 2018 in Es3 by RigelsHysaj (1,550 points)
Buongiorno,

da giorni che ci penso come generare l'immagine ricorsivamente dell'es3 e non ci riesco. Io per ogni nodo scorro la lista dei figli, se è il primo figlio richiamo la funzione su quel figlio con le coordinate x,y+20. Altrimenti se non è il primo figlio richiamo la funzione con quel figlio e coordinate x=il nr di foglie del primo figlio * 3 e y+20. Cosi mi vengono fuori coordinate strane!

Qualche aiutino?

Vi ringrazio in anticipo
173 views

3 Answers

K
Khalester (3310 points)
1 5 24
answered Dec 31, 2018 by Khalester (3,310 points)
Io l'ho disegnato in questo modo:

Prima disegno tutti i nodi, ma per fare ciò mi sono trovato le colonne di cui fanno parte i nodi. Nel senso la radice sta nella colonna 0, i figli della radice stanno nella colonna 1(*20) i figli dei figli nella colonna 2(*20) ecc... Arrivato alle foglie, per ogni foglia incremento di 3 la riga. E infine, penso alle linee bianche, l'unico problemino è stato per le verticali, ma ci si può arrivare.
R
RigelsHysaj (1550 points)
2 33 50
commented Dec 31, 2018 by RigelsHysaj (1,550 points)
ok arrivo alla prima foglia AMD_phenom.txt (0,120) a questo punto aumento di 3 per la prossima foglia Intel_Haswell.txt (3,120), salvo x, la prossima foglia Pentium4.txt aumento di 3 (6,120), poi tornando al padre x86  le sue coordinate diventano (6,100) da (0,100) che erano perche ho restituito x.
PieMH (2300 points)
2 12 31
answered Dec 31, 2018 by PieMH (2,300 points)
In realtà non c'è bisogno di calcolarti esplicitamente il numero di foglie di ogni albero ma lo fai implicitamente incrementando di 3 la riga su cui devi colorare ogni volta che non stai sul primo nodo dell'albero. Se poi a ogni chiamata ricorsiva ritorni questo incremento della riga in cui colori, ogni nodo chiamante la ricorsiva avrà l'informazione di a quale riga bisogna colorare, cioè ogni nodo sa i suoi sottoalberi fino a che riga sono arrivati a colorare. Consiglio: tieniti però l'info di due righe, quella del tuo nodo padre e quella nuova che si aggiorna.
R
RigelsHysaj (1550 points)
2 33 50
commented Dec 31, 2018 by RigelsHysaj (1,550 points)
se ogni volta incremento x di 3 e restituisco l'x, questo x mi influisce anche l'x nel caso quando è primo figlio
PieMH (2300 points)
2 12 31
commented Jan 1, 2019 by PieMH (2,300 points)
dipende da come lo imposti il codice, comunque per me la chiave è stata tenermi la x del nodo padre e la x ceh si incrementa per ogni figlio, e che ovviamente è tutto ricorsivo quindi il padre può essere figlio e allora deve ritornare al padre l'incremento della x
a
alessio.palma (1480 points)
0 34 56
answered Dec 31, 2018 by alessio.palma (1,480 points)
Il mio consiglio è: per una delle due variabili, anzichè usare una coordinata che aumenti di volta in volta (che non rimarrà aumentata quando la funzione torna al "piano precedente" di ricorsione) usa un vettore. Ad esempio inizializza una stringa vuota, ogni volta ci aggiungi un elemento e calcoli la len(elemento). Stai sicuro che con questo espediente hai l'incremento che desideri.