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

Do you need help?

problema ricorsione finale

E
Edoardo.Crocenzi (280 points)
2 3 5
in HW8 obbligatorio by (280 points)
Salve ragazzi ho un problema con la ricorsione. Quando vado a creare l'albero usando la funzione ricorsiva, il test è come se per i valori che vanno dal primo al penultimo capisce che siamo in una funzione ricorsiva, mentre per l'ultimo valore dice che la ricorsione non esiste. Come è possibile. Qualche consiglio??
952 views
closed

3 Answers

Best answer
VincenzoImperati (6290 points)
6 15 58
by (6.3k points)
selected by
Edoardo se il tuo codice è effettivamente ricorsivo i test generalmente stampano tutti "recursion detected!" E dopo questa stampa i test lanciano un'eccezione particolare creata dal prof, questa poi viene catturata dal test del professore che così si accorge che il tuo codice è ricorsivo e quindi non lancia "ERROR recursion not presente". Nel tuo caso questa eccezione viene effettivamente lanciata ma non viene catturata, così facendo il test genera "ERROR recursion not present". Non viene catturata perché nel tuo codice hai messo la chiamata ricorsiva in un try e nel corrispettivo except non hai specificato le eccezioni da catturare e risolvere, così facendo tu catturi tutte le eccezioni e anche quella lanciata dal test del prof. La morale è che nell'except basta specificare e risolvere solo le eccezioni che il tuo codice in quel try può generare
E
Edoardo.Crocenzi (280 points)
2 3 5
by (280 points)
grazie mille :)
E
Edward (25950 points)
4 4 172
by (26.0k points)
Intendi per l'ultimo test? (casuale_50x50)

Senza leggere il tuo codice è difficile spiegare come mai.
Dovresti provare manualmente a fare debug con quei dati di input, e vedere se la ricorsione avviene oppure no.
E
Edoardo.Crocenzi (280 points)
2 3 5
by (280 points)
io intendo per tutti quanti i tests. Quando vado a creare l'albero con la funzione ricorsiva, l'ultimo valore dell'albero è come se lo creasse senza la funzione ricorsiva
E
Edward (25950 points)
4 4 172
by (26.0k points)
Recursion detected lo testa per ogni test.
Se all'ultimo ti da errore, vuol dire che nell'ultimo test non rileva la ricorsione.
E
Edoardo.Crocenzi (280 points)
2 3 5
by (280 points)
La ricorsione viene rivelata in TUTTI i test, ma è come se nella funzione ricorsiva l'ultimo step che deve fare per creare l'albero non lo crea ricorsivamente, mentre dal primo al penultimo si
questo è quello che trovo nei test

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

ERROR

Recursion not present
E
Edward (25950 points)
4 4 172
by (26.0k points)
...

Il file test_01.py testa per ogni input, una sola volta, se la funzione è ricorsiva.
Quindi per ogni input avrai solamente una volta il print('Recursion detected! in creaalbero')
Se nell'ultima riga vedi ERROR Recursion not present, vuol dire che per l'ultimo input, il programma non ha rilevato la ricorsione.

Se invece stai dicendo che con qualsiasi input ti stampa più volte Recursion detected! in creaalbero allora non saprei, visto che a me viene stampato UNA VOLTA per test (nonostante abbia più funzioni ricorsive)
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
Hai considerato il fatto che per come hai strutturato la tua funzione ricorsiva ci potrebbero essere dei casi in cui non viene mai richiamata più di una volta? Ovvero che una volta controllato il caso base ritorna subito un valore senza effettuare una chiamata a se stessa.
E
Edoardo.Crocenzi (280 points)
2 3 5
by (280 points)
in tutti i casi la funzione funziona, tranne per l'ultimo valore.

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

 Recursion detected! in creaalbero

Recursion detected! in creaalbero

Recursion detected! in creaalbero

ERROR

Recursion not present
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
È per l'ultimo test che la ricorsione non è presente, non per l'ultimo valore (il che avrebbe poco senso), perciò semplicemente vai a vedere qual è l'input di quel test e cerca di capire perché il tuo algoritmo non effettua chiamate ricorsive in quel caso.