Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

mi sono bloccato con il caso ricorsivo...non riesco ad andare avanti

Light (5130 points)
55 181 229
in HW7 opzionale by (5.1k points)
sto provando tutte e grazie al debbuger ho capito il problema del mio codice...io scorrendo con i for per vedere le coppie che poi elimino ricorsivamente in una lista copia però ho problemi perchè vedo si i nodi degli alberi di gioco ma se lo faccio cosi al primo nodo che incontro che finisce il for mi ritorna subito il risultato senza andare avanti perchè faccio un "se finisce il for ritorna il risultato"...ma cosi non va bene perchè esce subito mentre se levo quel return mi ritorna un nonetype nell'inisieme ma va avanti fino alla fine....cosa sbaglio? come posso fare? un'altro errore è che io faccio è: risultato.union(chiamata ricorsiva in cui passo lo stesso risultato) e questo che mi da anche problemi....aiutatemi perchè misa ho proprio sbagliato l'idea...o l'implementazione..il problema puo essere che faccio tutto insieme e contemporaneamente? ma il none type come risolvo?
362 views

1 Answer

G
Giordano_Dionisi (3100 points)
16 41 59
by (3.1k points)
Ehhhh lì sta la parte complicatuccia... Come ti ripeto: abbandona l'idea della lista e passa subito all'insieme, perchè se continui così arriverai alla fine della tua implementazione che, al più, passerai 14 test su 18 e poi, per passare gli ultimi 4, ti serve almeno l'insieme (più molti altri accorgimenti) e lì sono dolori perchè devi ristrutturare gran parte del programma !!

Se invece già ritorni un insieme, allora considera che io non ritorno nulla, ho risolto questo problema passando l'insieme come parametro della funzione, se lo ritornavo era perennemente un casino (i return li ho inseriti solo per uscire dalla ricorsione ogni volta)

P.S.: è la stessa risposta che ho dato all'altro post
Light (5130 points)
55 181 229
by (5.1k points)
come non ritorni nulla?  ritorni il caso base e basta? io ho fatto come il prof in classe uso una funzione ausiliaria che mi deve calcolare l'insieme quindi devo ritornarlo! comunque si sto usando gli insiemi ma ho lo stesso problemi e sto anche provando a passare ogni volta l'insieme come input della funziona ma non mi va lo stesso....come fai a uscire dalla ricorsione per andare avanti? mi manca sto passaggio....cioè vedi un nodo ok vai al prossimo nodo....
G
Giordano_Dionisi (3100 points)
16 41 59
by (3.1k points)
Semplicemente esci dalla ricorsione con "return"... Cioè non serve altro, quando sai che devi uscire ritorni il nulla e, ricorsivamente, si modifica l'insieme della soluzione che avrai passato prima come parametro... Prova a farlo con il debugger e capirai che intendo, alla fine ottieni proprio l'insieme soluzione giusto (devi entrare nell'ottica ricorsiva del passaggio di parametri